如何通过指定的id字段检查2个表的相等性?

时间:2015-06-26 12:19:57

标签: sql tsql

我有2张这样的表:

CREATE TABLE [dbo].[M_FirstTable](
-- ...
[SomeId] [bigint] NOT NULL,
-- ...
)

CREATE TABLE [dbo].[M_SecondTable](
-- ...
[SomeId] [bigint] NOT NULL,
-- ...
)

我如何检查:这两个表是否等于其项目的所有SomeId字段?

例如:如果FirstTable = {{SomeId = 1},{SomeId = 2}}和SecondTable = {{SomeId = 1}},则这两个表不是eqaul,因为没有SomeId = 2的元素在SecondTable中。

2 个答案:

答案 0 :(得分:3)

这也可能是一个有用的查询:

SELECT a.[SomeId],
       b.[SomeId]
FROM   M_FirstTable a
       FULL OUTER JOIN M_SecondTable b
                    ON a.[SomeId] = b.[SomeId]
WHERE  a.[SomeId] IS NULL
        OR b.[SomeId] IS NULL 

1。当a。[SomeId]不为null时,它只出现在第一个表中。

  1. 当b。[SomeId]不为null时,它仅存在于第二个表中。

答案 1 :(得分:1)

也许是这样的:

Select SomeId From FirstTable

Except

Select SomeId From SecondTable

Union All

Select SomeId From SecondTable

Except

Select SomeId From FirstTable

这将生成FirstTable中不在SecondTable中的所有行的结果集,以及SecondTable中不在FirstTable中的所有行的结果集。