如何将LEFT JOIN与UNION结合?SQL查询异常问题求助
问题分析与解决
你的SQL语句存在逻辑错误:WHERE筛选条件仅作用于Product02的查询,而Product01的查询没有任何过滤规则,所以无论你怎么修改LIKE条件,Product01的所有product_id都会被纳入结果集,这就是你感觉总是选中同一批行的原因。
修正方案一:分别过滤两表后再合并
SELECT product_id FROM Product01 WHERE product_code LIKE '%"A1234"%' UNION SELECT product_id FROM Product02 WHERE product_code LIKE '%"A1234"%' ORDER BY product_id ASC
修正方案二:先合并两表再统一过滤(逻辑更直观)
SELECT product_id FROM ( SELECT product_id, product_code FROM Product01 UNION ALL SELECT product_id, product_code FROM Product02 ) AS combined_tables WHERE product_code LIKE '%"A1234"%' ORDER BY product_id ASC
- 用
UNION ALL代替UNION能提升性能,若需要去重,可在外层查询添加DISTINCT关键字 - 若实际数据中
product_code不含双引号,直接使用'%A1234%'即可
内容的提问来源于stack exchange,提问作者Egven
相关产品推荐
相关产品推荐

