检查 2 个表/查询的所有记录列是否相等

RAS*_*nda 3 sql-server-2005

在 SQL Server 2005 中,我想做一个查询来检查 2 个表的所有记录列是否相同,例如:

declare @tbl1 table(col nvarchar(50))
declare @tbl2 table(col nvarchar(50))

insert into @tbl1
    select '11' union select '22'
insert into @tbl2
    select '22' 
--should return false
Run Code Online (Sandbox Code Playgroud)
declare @tbl1 table(col nvarchar(50))
declare @tbl2 table(col nvarchar(50))

insert into @tbl1
    select '11' 
insert into @tbl2
    select '11' union select '22'
--should return false
Run Code Online (Sandbox Code Playgroud)
declare @tbl1 table(col nvarchar(50))
declare @tbl2 table(col nvarchar(50))

insert into @tbl1
    select '11' union select '22'
insert into @tbl2
    select '11' union select '22'
--should return true
Run Code Online (Sandbox Code Playgroud)

使用IN子句,或者LEFT JOIN我只能检查其中一个表中的所有记录列是否存在于另一个表中。

编辑:订单无关紧要

ype*_*eᵀᴹ 5

我认为这会奏效:

SELECT CASE WHEN NOT EXISTS
         ( SELECT * FROM table1
           EXCEPT 
           SELECT * FROM table2
         ) 
             AND NOT EXISTS 
         ( SELECT * FROM table2
           EXCEPT 
           SELECT * FROM table1
         ) 
         THEN 'True' ELSE 'False'
       END AS result ;
Run Code Online (Sandbox Code Playgroud)