在 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我只能检查其中一个表中的所有记录列是否存在于另一个表中。
编辑:订单无关紧要
我认为这会奏效:
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)
| 归档时间: |
|
| 查看次数: |
6350 次 |
| 最近记录: |