2

ID と日付の 2 つのテーブルがあり、両方のテーブルを日付順に並べ替えて、同じ順序になっていない ID を確認したい

例 table_1

id   |  date
------------
A       01/01/09
B       02/01/09
C       03/01/09

テーブル_2

id   |  date
------------
A       01/01/09
B       03/01/09
C       02/01/09

そして結果を得る

 B
 C

確かに、order by queryの結果をダンプして比較することはできましたが、同じ結果を得るSQLのような方法があるかどうか疑問に思っていました.

明確にするために編集します。日付はテーブル間で必ずしも同じではありません。順序を決定するためだけに存在します

ありがとう

4

3 に答える 3

3

TABLE_1とで日付が異なる場合は、TABLE_2両方のテーブルをランク付けする必要があります。例えば:

SQL> WITH table_1 AS (
  2     SELECT 'A' ID, DATE '2009-01-01' dt FROM dual UNION ALL
  3     SELECT 'B', DATE '2009-01-02' FROM dual UNION ALL
  4     SELECT 'C', DATE '2009-01-03' FROM dual
  5  ), table_2 AS (
  6     SELECT 'A' ID, DATE '2009-01-01' dt FROM dual UNION ALL
  7     SELECT 'C', DATE '2009-01-02' FROM dual UNION ALL
  8     SELECT 'B', DATE '2009-01-03' FROM dual
  9  )
 10  SELECT t1.ID
 11    FROM (SELECT ID, row_number() over(ORDER BY dt) rn FROM table_1) t1
 12   WHERE (ID, rn) NOT IN (SELECT ID,
 13                                 row_number() over(ORDER BY dt) rn
 14                            FROM table_2);

ID
--
B
C
于 2009-08-07T10:29:14.403 に答える
0

デートで入会しただけでなくIDの比較も同じですよね。これは、table_1 がマスター シーケンスであると想定しています。

SELECT table_1.id
FROM
  table_1
INNER JOIN table_2
    on table_1.[date] = table_2.[date]
WHERE table_1.id <> table_2.id
ORDER BY table_1.id
于 2009-08-07T10:01:56.157 に答える
0

えっselect id from table_1, table_2 where table_1.id = table_2.id and table_1.date <> table_2.date

于 2009-08-07T10:03:20.540 に答える