2016-04-03 7 views
0

Ich habe eine Tabelle wie folgt aus:Wie finden Sie ähnliche Daten mit verschiedenen Rowid in Oracle?

X Y 
====== 
20 20 
20 20 
20 21 
23 22 
22 23 
21 20 

Ich brauche diese Rowid das finden, wo X=Y aber ihre Rowid ist nicht das Gleiche? Wie die erste Zeile X und die zweite Zeile Y ist das gleiche, aber sie sind in verschiedenen Reihen.

+1

'' ROWID'' ist nie gleich für zwei verschiedene Zeilen im Abfrageergebnis – mmuzahid

+0

Welche 'ROWID' Werte wollen Sie haben in deiner Ausgabe? Zum Beispiel hat der Wert "20" mehrere übereinstimmende Paare von Datensätzen mit einer anderen "ROWID". Welche Werte möchten Sie? –

+0

Warum willst du rowID? –

Antwort

0

funktioniert können Sie es viele Möglichkeiten tun, und da Sie die rowid oben gebracht, das ist einer von ihnen:

select * from yourtable tab1 join yourtable tab2 on tab1.x = tab2.y and tab1.rowid <> tab2.rowid 
0

Sie wollen doppelte Zeilen:

select * 
from 
(
    select x, y, rowid, count(*) over (partition by x,y) as cnt 
    from tab 
    where x=y 
) dt 
where cnt > 1 
0

Bitte überprüfen Sie, ob diese

select * from tab a where exists (select * from tab b where a.x=b.y and a.rowid!=b.rownid); 
+0

Es ist für rownum ungültiger user.table.column, table.column, oder Spaltenspezifikation – 5A9U

+0

ROWNUM ist eine Pseudospalte, die erzeugt wird, wenn Zeilen aus einer Abfrage ausgegeben werden - es ist keine Spalte in einer Tabelle. Vielleicht meintest du ROWID? –

Verwandte Themen