Se se trata apenas de tratar
(B, A)
como uma duplicata de (A, B)
e você não se importa particularmente se a linha retornada será (A, B)
ou (B, A)
, você poderia fazer algo assim: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;
Ou seja, se
BUG_ID
tem um valor maior que LINKED_BIG_ID
, a consulta troca os dois IDs, caso contrário, os valores são retornados inalterados. Portanto, (A, B)
e (B, A)
sempre produz linhas duplicadas (ambas seriam (A, B)
ou (B, A)
) e DISTINCT
garante que não haja nenhum no resultado final.