Om det här bara handlar om att behandla (B, A)
som en dubblett av (A, B)
och du bryr dig inte särskilt mycket om raden som returneras kommer att vara (A, B)
eller (B, A)
, kan du göra något så här:
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 vill säga om BUG_ID
har ett större värde än LINKED_BIG_ID
, byter frågan de två ID:n, annars returneras värdena oförändrade. Därför (A, B)
och (B, A)
producera alltid dubbletter av rader (båda skulle vara antingen (A, B)
eller (B, A)
), och DISTINCT
ser till att det inte finns några i slutresultatet.