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.