mysql获取2个结果集的差异



所以我有两个表。一个叫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_columnsuperIDs表中the_idcolumn_ofcomparableMainIds表中

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

相关内容

  • 没有找到相关文章

最新更新