Hvis dette kun handler om at behandle (B, A)
som et duplikat af (A, B)
og du er ligeglad med, om den returnerede række vil være (A, B)
eller (B, A)
, du kunne gøre noget som dette:
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;
Det vil sige, hvis BUG_ID
har en større værdi end LINKED_BIG_ID
, skifter forespørgslen de to id'er, ellers returneres værdierne uændrede. Derfor (A, B)
og (B, A)
producere altid duplikerede rækker (begge ville være enten (A, B)
eller (B, A)
), og DISTINCT
sørger for, at der ikke er nogen i det endelige resultat.