MSSQL逐行比较两个表

时间:2017-09-13 14:14:03

标签: sql sql-server

我正在尝试逐行比较两个select语句的结果。 例如,表格如下所示:

GUID | NUMBER (auto inc) | VERSION (timestamp) | Name
A    | 4                 | 1                   | Robert
B    | 9                 | 2                   | John
C    | 14                | 3                   | Magret

现在选择看起来像

select guid from table order by number;
select guid from table order by version;

现在,如果GUID在同一行的两个选择中相同,则应逐行比较这些表。如果是这样,则返回true,否则返回false。

编辑: 目标是检测列GUID和NAME的更改。列NUMBER是一个自动增量值,仅在创建条目时增加。 VERSION是一个时间戳,每次更新条目时都会更改。现在,目标是比较上面的两个选择查询以确定对表的更改,因为如果条目的顺序不同,则发生了更改。

谢谢, shirocko

1 个答案:

答案 0 :(得分:0)

如果您想知道所有行是否与两列相同,那么:

select (case when count(*) = sum(case when rnk_1 = rnk2 then 1 else 0 end)
             then 'All Same'
             else 'Different'
        end)
from (select t.*,
             rank() over (order by number) as rnk_1,
             rank() over (order by version) as rnk_2
      from t
     ) t;