Oracle
 sql >> Database >  >> RDS >> Oracle

Ignora i valori ridondanti recuperati dal database

Se si tratta semplicemente di trattare (B, A) come duplicato di (A, B) e non ti interessa particolarmente se la riga restituita sarà (A, B) o (B, A) , potresti fare qualcosa del genere:

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;

Cioè, se BUG_ID ha un valore maggiore di LINKED_BIG_ID , la query scambia i due ID, altrimenti i valori vengono restituiti invariati. Pertanto, (A, B) e (B, A) producono sempre righe duplicate (entrambi sarebbero (A, B) o (B, A) ), e DISTINCT assicura che non ce ne siano nel risultato finale.