检查所有表行是否相等

时间:2011-07-14 17:30:41

标签: sql sql-server

有两张表格结构相同 我们假设两者中的行数相等 你如何检查所有行是否相等?有没有比比较两个表中具有相同id的给定行的每个列值更快的方法?

2 个答案:

答案 0 :(得分:22)

试试这个:

SELECT * FROM table1
EXCEPT
SELECT * FROM table2

如果返回任何内容,则它们不相等。

答案 1 :(得分:8)

安倍的答案是正确的,但前提是它们的行数相同。 (当我写下我的原始回答“谴责”他的答案时,我误解了这个问题。)如果table1可能是(更大的)table2的子集,反之亦然,我会尝试:

if 
(
not exists ( select * from table1
             except
             select * from table2
           )
and
not exists ( select * from table2
             except
             select * from table1
           )
)

如果它们相同则为true,如果它们不同则为false。