SQL中用minus筛选ID后,如何获取对应列的目标数据?
解决方案
下面提供几种实现需求的SQL写法:
方法1:使用NOT EXISTS子查询
这是性能较优的方案,直接检查Table2中是否存在匹配的ID:
SELECT t1.Value1 FROM Table1 t1 WHERE NOT EXISTS ( SELECT 1 FROM Table2 t2 WHERE t2.ID = t1.ID );
方法2:LEFT JOIN + IS NULL
通过左连接后过滤无匹配的行:
SELECT t1.Value1 FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.ID = t2.ID WHERE t2.ID IS NULL;
方法3:结合MINUS实现
先通过MINUS筛选出Table1独有的ID,再关联获取对应Value1:
SELECT t1.Value1 FROM Table1 t1 INNER JOIN ( SELECT ID FROM Table1 MINUS SELECT ID FROM Table2 ) sub ON t1.ID = sub.ID;
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

