You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选满足两列WHERE子句条件的表行?求更简洁写法

SQL查询优化:简化多条件组合筛选

我需要筛选出满足两列WHERE子句条件的表数据,目前写出了如下SQL查询语句,请问是否有更简洁的写法?

SELECT name, number 
FROM namenumber 
WHERE name IN ("Car") AND number = "1234"
UNION 
SELECT name, number 
FROM namenumber 
WHERE name IN ("Train") AND number = "5678"
UNION 
SELECT name, number 
FROM namenumber 
WHERE name IN ("Flight") AND number = "9012";

当然有更简洁的写法,你可以把多组(name, number)的匹配条件用IN结合元组的方式来实现,只需要一次查询就能完成,不需要多次UNION拼接,效率和可读性都会更好:

SELECT name, number
FROM namenumber
WHERE (name, number) IN (
    ('Car', '1234'),
    ('Train', '5678'),
    ('Flight', '9012')
);

补充说明:

  • 这种元组匹配的写法支持绝大多数主流数据库(如MySQL、PostgreSQL、SQL Server等)
  • 原SQL里的UNION会自动去重,如果你的数据不会出现重复行,原本可以用UNION ALL提升性能,但优化后的写法本身就不存在重复结果的问题,无需额外处理
  • 原SQL中name IN ("Car")等价于name = "Car",优化后的写法已经直接整合了这个逻辑,无需单独写IN

内容的提问来源于stack exchange,提问作者Datha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:25:23