Oracle
 sql >> Base de données >  >> RDS >> Oracle

Ignorer les valeurs redondantes extraites de la base de données

S'il s'agit simplement de traiter (B, A) en double de (A, B) et vous ne vous souciez pas particulièrement de savoir si la ligne renvoyée sera (A, B) ou (B, A) , vous pourriez faire quelque chose comme ceci :

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;

Autrement dit, si BUG_ID a une valeur supérieure à LINKED_BIG_ID , la requête permute les deux ID, sinon les valeurs sont retournées inchangées. Donc, (A, B) et (B, A) produit toujours des lignes en double (les deux seraient soit (A, B) ou (B, A) ) et DISTINCT s'assure qu'il n'y en a pas dans le résultat final.