悠悠楠杉
网站页面
正文:
在数据库操作中,条件判断是高频需求。MySQL的CASE语句像编程语言中的if-else,却能直接在SQL层完成数据转换,避免多次查询或应用层处理。
SELECT
product_name,
CASE category_id
WHEN 1 THEN '电子产品'
WHEN 2 THEN '家居用品'
ELSE '其他'
END AS category_name
FROM products;SELECT
order_id,
CASE
WHEN total_amount > 1000 THEN 'VIP订单'
WHEN total_amount BETWEEN 500 AND 1000 THEN '优质订单'
ELSE '普通订单'
END AS order_level
FROM orders;UPDATE user_logs
SET action_desc = CASE
WHEN action_code = 'ERR_404' THEN '页面不存在'
WHEN action_code LIKE 'TIMEOUT%' THEN '请求超时'
ELSE '其他错误'
END;SELECT
COUNT(*) AS total_users,
SUM(CASE WHEN age < 18 THEN 1 ELSE 0 END) AS minors,
SUM(CASE WHEN last_login_date > CURDATE() - INTERVAL 30 DAY THEN 1 ELSE 0 END) AS active_users
FROM users;CASE WHEN YEAR(create_time)=2023),将无法使用索引IF(condition, true_val, false_val)适合简单二元判断,而CASE更适合多分支逻辑电商平台常用CASE实现动态定价逻辑:
sql
SELECT
sku_id,
base_price,
CASE
WHEN is_premium_member = 1 THEN base_price * 0.8
WHEN EXISTS (SELECT 1 FROM promotions WHERE sku_id = p.sku_id) THEN base_price * 0.9
ELSE base_price
END AS final_price
FROM products p;掌握CASE语句的灵活组合,能显著减少代码与数据库的往返交互,尤其在数据迁移、报表生成等场景中效果立竿见影。