所以我有两个表。一个叫superID,它有一列"superIDBIGINT",另一个叫mainID,有一列叫"subidBIGINT"。我知道mainIDS是superID的一个子集。我如何才能看到只在superID中而不在mainID中的行。
这是我尝试的解决方案:
SELECT * FROM atlas_comparables.superIDs WHERE NOT EXISTS
(SELECT * FROM atlas_comparables.mainIDs);
然而,这给了我一个空套。有什么帮助吗?
试试这个
SELECT * FROM atlas_comparables.superIDs WHERE the_id_column NOT IN
(SELECT the_idcolumn_ofcomparable FROM tlas_comparables.mainIDs);
注:the_id_column
在superIDs
表中the_idcolumn_ofcomparable
在MainIds
表中
如果id在每个表中只出现(最多)一次,那么使用左外部联接可以相对容易地做到这一点:
select si.*
from atlas_comparables.superIDs si left join
atlas_comparables.mainIDs mi
on si.SuperID = mi.SubID
where mi.SubId is NULL;
如果您正在尝试比较所有列(就像except
在其他数据库中所做的那样),那么您需要一个更复杂的查询,其中包括on
子句中的所有列。