我有两张桌子,t1,t2。
例如: t1是这样的:
ID Ordinal
1 1
2 2
3 3
4 4
t2是这样的:
ID Ordinal
1 1
2 3
3 5
4 6
在这种情况下,当我对序数进行比较时,我想将订单作为“无变化”返回,因为如果仔细观察,那么这两个表的实际顺序不会改变。
但是在这样的场景中: t2是这样的:
ID Ordinal
1 1
2 5
3 3
4 6
我希望看到结果为 ID 2和3从T1更改。
有什么想法吗?
谢谢!
答案 0 :(得分:4)
试试这个:
SELECT T2.ID
FROM (SELECT ID, ROW_NUMBER() OVER (ORDER BY Ordinal) AS rn FROM T1) T1
JOIN (SELECT ID, ROW_NUMBER() OVER (ORDER BY Ordinal) AS rn FROM T2) T2
ON T1.ID = T2.ID
WHERE T1.rn <> T2.rn
答案 1 :(得分:0)
尝试使用以下查询:
SELECT a.ID, a.Ordinal, b.Ordinal
FROM (
SELECT t1.*, rownum rnm
FROM t1
ORDER BY Ordinal
)a,
(
SELECT t2.*, rownum rnm
FROM t2
ORDER BY Ordinal
)b
WHERE a.ID = b.ID
-- AND a.rnm <> b.rnm //This deosn't work
AND a.Ordinal <> b.Ordinal
修改:更新了查询以返回所需的结果集