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.