IF 与 CASE 流程控制

SQL 也能写『如果……就……否则……』。IF 适合二选一,CASE 适合多分支,常在 SELECT 里给数据打标签、做分段,比把数据拉出来再用代码判断要高效。

IF 与 CASE 流程控制要点

IF 与 CASE 流程控制示例

						-- 给订单标状态
						SELECT order_id,
						       IF(paid = 1, '已支付', '未支付') AS state
						FROM orders;

						-- 多档折扣分段
						SELECT product_id,
						       CASE
						         WHEN price ≤ 100 THEN '低价'
						         WHEN price ≤ 500 THEN '中价'
						         ELSE '高价' END AS tier
						FROM product;

						-- 昵称为空时给个默认名
						SELECT IFNULL(nickname, '匿名用户') AS name
						FROM user;
避坑提醒:CASE 的分支是从上往下匹配,命中第一个就停。分段区间务必从小到大排,否则『小于 500』这种分支会把后面更细的区间全挡掉。
IF 与 CASE 流程控制 · MySQL 函数 知识卡片
卡片 07 / 11 · MySQL 函数(1080×1440 速查卡片)

MySQL 函数知识点