MySQL中的IF函数可以在一条SQL语句里完成条件判断,根据条件是否成立返回不同的值。它的基本语法是IF(condition, value_if_true, value_if_false),当条件为真时返回第二个参数,否则返回第三个参数。这种写法比在应用代码里先做查询再判断要简洁很多。

IF函数的基本用法
下面这个示例查询用户表,根据年龄判断用户是否成年:
SELECT name, age, IF(age >= 18, '成年', '未成年') AS status FROM user;
在上面的代码中,IF(age >= 18, '成年', '未成年')会为每一行返回一个文本结果,方便直接展示。
处理空值的情况
当字段可能为NULL时,可以配合IF判断来给出默认值:
SELECT order_id, IF(amount IS NULL, 0, amount) AS real_amount FROM orders;
这里使用了IF(amount IS NULL, 0, amount),确保金额字段不会显示NULL。
结合聚合函数做分类统计
IF函数也常写在聚合函数里,用来按条件计数:
SELECT COUNT(*) AS total, SUM(IF(score >= 60, 1, 0)) AS pass_count FROM student;
上述语句中,SUM里面的IF把及格的记录转成1,不及格转成0,求和后就得到了及格人数。
在WHERE之外的地方使用
除了SELECT列表,IF还能用在ORDER BY中改变排序逻辑:
SELECT name, vip_level FROM member ORDER BY IF(vip_level = 0, 999, vip_level);
这样普通会员会被排到最后,高等级会员自然靠前。掌握这些用法后,MySQL的IF函数就能覆盖大部分日常逻辑判断需求。