Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Aus der Datenbank abgerufene redundante Werte ignorieren

Wenn es nur um die Behandlung von (B, A) geht als Duplikat von (A, B) und Sie kümmern sich nicht besonders darum, ob die zurückgegebene Zeile (A, B) sein wird oder (B, A) , könnten Sie so etwas tun:

SELECT DISTINCT
  CASE WHEN BUG_ID > LINKED_BUG_ID THEN LINKED_BUG_ID ELSE BUG_ID AS BUG_ID,
  CASE WHEN BUG_ID > LINKED_BUG_ID THEN BUG_ID ELSE LINKED_BUG_ID AS LINKED_BUG_ID
FROM MY_BUG_LINKS;

Das heißt, wenn BUG_ID hat einen größeren Wert als LINKED_BIG_ID , vertauscht die Abfrage die beiden IDs, ansonsten werden die Werte unverändert zurückgegeben. Daher (A, B) und (B, A) erzeugen immer doppelte Zeilen (beide wären entweder (A, B) oder (B, A) ) und DISTINCT stellt sicher, dass das Endergebnis keine enthält.