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

如何用WHERE子句替代UNION改写SQL查询?

去除UNION改写SQL查询的方法

你可以把两个子查询的筛选条件合并到同一个WHERE子句中,用逻辑运算符OR连接,就能去掉UNION。原查询的两个筛选逻辑没有重叠(一个是status='Active',另一个是status='Cancelled'),所以合并后的结果和原UNION的结果完全一致。

改写后的完整SQL如下:

select 
    id,
    status,
    date
from 
    table
where 
    status = 'Active'
    OR (status = 'Cancelled' AND cancel_reason_id IS NOT NULL)

需要注意的是,原查询使用UNION会自动去重,但因为两个子查询的status取值不同,本来就不会有重复行,所以用OR改写后不需要额外处理去重,结果和原查询完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:45:36