在MySQL中,条件表达式用于在查询中对数据进行筛选、判断和逻辑处理。它们常用于
SELECT、
WHERE、
HAVING、
CASE语句等场景中,帮助实现灵活的数据操作。掌握这些表达式的使用方法,能显著提升SQL查询的效率与可读性。
1. 使用 WHERE 进行基本条件筛选
在查询数据时,通过
WHERE子句配合比较和逻辑运算符,可以过滤出符合条件的记录。 常用比较运算符: =:等于 或 !=:不等于 >:大于 :小于 >=:大于等于 :小于等于
常用逻辑运算符:
AND:同时满足多个条件 OR:满足任一条件 NOT:取反例如,从用户表中筛选年龄大于25且状态为启用的用户:
SELECT * FROM users WHERE age > 25 AND status = 1;
2. 使用 CASE 实现条件判断
CASE表达式类似于编程语言中的 if-else 或 switch,可用于在查询中返回不同值。
简单CASE语法:
SELECT
name,
CASE gender
WHEN 'M' THEN '男'
WHEN 'F' THEN '女'
ELSE '未知'
END AS gender_text
FROM users;
搜索型CASE语法(更灵活):
SELECT
score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 75 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS level
FROM student_scores;
3. 使用 IF 函数简化条件判断
MySQL提供
IF()函数,适合简单的二选一判断,语法为:
IF(条件, 真值, 假值)。
例如,判断订单是否已支付并返回状态文本:
SELECT order_id, IF(paid = 1, '已支付', '未支付') AS payment_status FROM orders;
该函数常用于生成报表字段或临时标记数据状态。
4. 结合 NULL 值处理的条件表达式
处理可能为空的字段时,应使用
IS NULL或
IS NOT NULL,而不是
= NULL(因为NULL参与的比较结果为UNKNOWN)。
例如,查找邮箱未填写的用户:
SELECT * FROM users WHERE email IS NULL;
也可结合
IFNULL()或
COALESCE()函数提供默认值:
SELECT name, IFNULL(phone, '暂无电话') AS contact FROM users;
基本上就这些常见用法。合理使用MySQL条件表达式,能让查询更智能、结果更清晰。关键是根据实际需求选择合适的语法结构,保持代码简洁易懂。
