mysql获得2个结果集的差异

时间:2013-07-02 18:27:33

标签: mysql dataset relational-database resultset intersection

所以我有两张桌子。一个叫做superIDs,它有“superID BIGINT”列,另外一个名为mainIDs,有一个名为“subid BIGINT”的列。我知道mainIDS是superID的子集。如何查看仅在superID中但不在mainID中的行。

这是我尝试解决方案:

SELECT * FROM atlas_comparables.superIDs WHERE NOT EXISTS
(SELECT * FROM atlas_comparables.mainIDs);

然而,这让我回到了一个空集。有什么帮助吗?

2 个答案:

答案 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子句中的所有列。