所以我有两张桌子。一个叫做superIDs,它有“superID BIGINT”列,另外一个名为mainIDs,有一个名为“subid BIGINT”的列。我知道mainIDS是superID的子集。如何查看仅在superID中但不在mainID中的行。
这是我尝试解决方案:
SELECT * FROM atlas_comparables.superIDs WHERE NOT EXISTS
(SELECT * FROM atlas_comparables.mainIDs);
然而,这让我回到了一个空集。有什么帮助吗?
答案 0 :(得分:2)
试试这个
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
表
答案 1 :(得分:0)
如果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
子句中的所有列。