您可能想查看“EXCEPT”运算符。除了显示两个表之间的差异。结果将是第一个表中的记录。
SELECT tbl.* FROM (VALUES
( 1, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 2, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 3, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 4, 'AAA', 'BBB', 'CCC', 'DDD', 'DDD')
) tbl ([ID], [Column2], [Column3], [Column4], [Column5], [Column6])
EXCEPT
SELECT tbl.* FROM (VALUES
( 1, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 2, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 3, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 4, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
) tbl ([ID], [Column2], [Column3], [Column4], [Column5], [Column6])
db<>fiddle
或者您可以对同一个表进行左连接。
;WITH
source_data
AS
(
SELECT tbl.* FROM (VALUES
( 1, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 2, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 3, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 4, 'AAA', 'BBB', 'CCC', 'DDD', 'DDD')
, ( 1, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 2, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 3, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
, ( 4, 'AAA', 'BBB', 'CCC', 'DDD', 'EEE')
) tbl ([ID], [Column2], [Column3], [Column4], [Column5], [Column6])
)
SELECT
tbl1.*
FROM
source_data AS tbl1
LEFT JOIN source_data AS tbl2 ON tbl1.[ID] = tbl2.[ID]
WHERE
1=1
AND
(
tbl1.[Column2] != tbl2.[Column2]
OR tbl1.[Column3] != tbl2.[Column3]
OR tbl1.[Column4] != tbl2.[Column4]
OR tbl1.[Column5] != tbl2.[Column5]
OR tbl1.[Column6] != tbl2.[Column6]
)
db<>fiddle