2009-08-07 12 views
2

Ich habe zwei Tabellen von IDs und Daten, und ich mag beiden Tabellen nach Datum bestellen und diese IDs sehen, dieSQL - Suche nach Unterschieden in Zeilenfolge von zwei Tabellen

zum Beispiel nicht in der gleichen Reihenfolge ist table_1

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

table_2

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

und nutzen Sie die Ergebnisse

B 
C 

Jetzt allerdings konnte ich nur die Ergebnisse einer Bestellung durch Abfrage Dump und diff sie, aber ich frage mich, ob Es gibt eine SQL-y-Methode, um dieselben Ergebnisse zu erhalten.

bearbeiten zu klären, die Daten zwischen Tabellen nicht unbedingt gleich sind, es ist da nur eine Bestellung

Dank

Antwort

3

Wenn die Daten in TABLE_1 und TABLE_2 unterschiedlich sind, müssen Sie beide Tabellen auf ihrem Rang beitreten. Zum Beispiel:

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 
0

Ist es nicht nur der Fall des Verbindens mit dem Datum und den Vergleich der IDs zu bestimmen ist das Gleiche. Dies setzt voraus, dass Tabelle_1 die Mastersequenz ist.

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 
0

ohm select id from table_1, table_2 where table_1.id = table_2.id and table_1.date <> table_2.date?

+0

Ich denke, es wird es nicht tun. Sie können unterschiedliche Daten haben, aber immer noch "in der gleichen Reihenfolge" sein - was laut Fragesteller eine korrekte Situation ist. – Ray

+0

Ja, die Daten sind in den Tabellen nicht gleich, nur das Bestellfeld –