Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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
oraclesql中的顺序比较_Sql_Oracle - Fatal编程技术网

oraclesql中的顺序比较

oraclesql中的顺序比较,sql,oracle,Sql,Oracle,我有两张桌子,t1,t2 例如: t1是这样的: ID Ordinal 1 1 2 2 3 3 4 4 ID Ordinal 1 1 2 3 3 5 4 6 ID Ordinal 1 1 2 5 3 3 4 6 t2是这样的: ID Ordinal 1 1 2 2 3 3 4 4 ID Ordinal 1 1 2 3 3 5 4 6 ID Ordinal 1 1

我有两张桌子,t1,t2

例如: t1是这样的:

ID Ordinal
1    1
2    2
3    3
4    4
ID Ordinal
1    1
2    3
3    5
4    6
ID Ordinal
1    1
2    5
3    3
4    6
t2是这样的:

ID Ordinal
1    1
2    2
3    3
4    4
ID Ordinal
1    1
2    3
3    5
4    6
ID Ordinal
1    1
2    5
3    3
4    6
在这个场景中,当我对序号进行比较时,我希望返回顺序不变,因为如果仔细观察,这两个表的实际顺序不会改变

但在这种情况下: t2是这样的:

ID Ordinal
1    1
2    2
3    3
4    4
ID Ordinal
1    1
2    3
3    5
4    6
ID Ordinal
1    1
2    5
3    3
4    6
我希望看到结果 ID 2和3由T1更改

有什么想法吗

谢谢

列表项 试试这个:

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
试试这个:

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

请尝试使用以下查询:

    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

编辑:更新查询以返回所需的结果集

尝试使用以下查询:

    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

编辑:更新查询以返回所需的结果集

谢谢Jay,更新查询以返回正确的结果集。无意冒犯,但我想你误解了我的问题…你能再看一次我的问题吗?非常感谢你的帮助,很好。我很想知道我的第一个查询出了什么问题,因此尝试了另一种方法。谢谢Jay,更新了查询以返回正确的结果集。无意冒犯,但我想你误解了我的问题…你能再看一次我的问题吗?非常感谢你的帮助,很好。我很想知道我的第一个问题出了什么问题,因此我尝试了另一个选择。