Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Ignorar valores redundantes obtidos do banco de dados


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.