SQL查询两张表合并后满足status=1的orderId相关问题咨询
实现方案
你可以根据是否需要去重选择对应写法:
写法1:先过滤再合并(性能更优,推荐)
提前在两张表分别过滤掉不符合条件的数据,再合并结果,减少合并阶段处理的数据量:
SELECT orderId FROM tb1 WHERE status = 1 UNION ALL SELECT orderId FROM tb2 WHERE status = 1;
写法2:先合并再过滤
先合并两张表全量数据再统一过滤,适合需要对合并后的数据做额外复杂处理的场景:
SELECT orderId FROM ( SELECT orderId, status FROM tb1 UNION ALL SELECT orderId, status FROM tb2 ) AS combined WHERE status = 1;
补充说明
- 如果同一个
orderId可能在两张表中重复出现,且你需要最终结果去重,把上面语句中的UNION ALL替换为UNION即可。 - 按照你提供的测试数据,执行后返回的
orderId为:003、005、007、002、008。
内容的提问来源于stack exchange,提问作者Amamra
相关产品推荐
相关产品推荐

