Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 检查所有表行是否相等_Sql_Sql Server - Fatal编程技术网

Sql 检查所有表行是否相等

Sql 检查所有表行是否相等,sql,sql-server,Sql,Sql Server,有两个结构相同的表。 让我们假设两者中的行数相等。 如何检查所有行是否相等?有没有比比较两个表中具有相同id的给定行的每个列值更快的方法 试试这个: SELECT * FROM table1 EXCEPT SELECT * FROM table2 如果返回任何内容,则它们不相等。Abe的回答是正确的,但前提是它们的行数相同。(当我写下我最初的回答“谴责”他的答案时,我误读了这个问题。)如果表1可能是(更大的)表2的子集,或者反之亦然,我会尝试: if ( not exists ( selec

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

试试这个:

SELECT * FROM table1
EXCEPT
SELECT * FROM table2

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

Abe的回答是正确的,但前提是它们的行数相同。(当我写下我最初的回答“谴责”他的答案时,我误读了这个问题。)如果表1可能是(更大的)表2的子集,或者反之亦然,我会尝试:

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

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

相等是指每行中的每一个值都相同?正如Eric正确指出的,如果表1是表2的子集,则不起作用;如果行数加倍(例如,两行值相同),则不起作用。逻辑正确,但是我对这个查询有问题,因为first select没有编译。首先用“IF”更改“Select”以设置变量,它工作得非常好。谢谢