MySQL条件查询:无需UNION实现员工表特定筛选需求
无需UNION的替代查询方案
当然有不用UNION ALL的写法啦!我们可以直接在WHERE子句里通过组合逻辑条件来实现需求,代码更紧凑,逻辑也一目了然。
直接看最终的查询语句:
SELECT * FROM employee WHERE dept = 'customer service' OR (dept = 'marketing' AND phone IS NOT NULL);
逻辑说明
这个语句的筛选规则完全匹配你的需求:
- 对于
customer service部门:只要部门字段匹配,就保留所有记录(包括phone为NULL的条目) - 对于
marketing部门:只有当部门匹配且phone字段不为NULL时,才会被选中
和你原来用UNION ALL拆分两个查询再合并的写法相比,这个单查询的方式执行效率通常也不会差(数据库优化器大多能处理好这类逻辑),而且代码更简洁,维护起来也更方便。
内容的提问来源于stack exchange,提问作者Great Saiyaman
相关产品推荐
相关产品推荐

