0

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

这是我尝试的解决方案:

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

然而,这给我一个空集。有什么帮助吗?

4

2 回答 2

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表中

于 2013-07-02T18:30:19.413 回答
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

于 2013-07-02T18:31:05.640 回答