如何修改SQL查询以找出tab_Def与tab_Prod表的不匹配行?
精准筛选col_1为101与-101对应行的SQL修改方案
修改思路
原查询会返回所有col_2相同但col_1不同的行,要精准拿到目标数据,只需在条件里明确限定tab_Def的col_1为101,同时tab_Prod对应col_2的col_1为-101即可。另外原查询里的GROUP BY是多余的——因为col_1+col_2在两表中是唯一组合,不需要分组。
修改后的SQL语句
SELECT a.col_1, a.col_2, b.col_1 FROM tab_Def a JOIN tab_Prod b ON a.col_2 = b.col_2 WHERE a.col_1 = 101 AND b.col_1 = -101 ORDER BY a.col_1, b.col_1, a.col_2;
补充说明
- 用显式
JOIN替代旧的逗号连接表写法,更符合现代SQL规范,可读性更强 - 新增的
WHERE条件精准锁定了需要的行组合,避免返回其他无关的不匹配数据
内容的提问来源于stack exchange,提问作者UserGoogle
相关产品推荐
相关产品推荐

