sql >> Base de Datos >  >> RDS >> Oracle

Ignorar valores redundantes obtenidos de la base de datos

Si se trata simplemente de tratar (B, A) como un duplicado de (A, B) y no le importa particularmente si la fila devuelta será (A, B) o (B, A) , podrías hacer algo como esto:

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;

Es decir, si BUG_ID tiene un valor mayor que LINKED_BIG_ID , la consulta intercambia los dos ID; de lo contrario, los valores se devuelven sin cambios. Por lo tanto, (A, B) y (B, A) siempre produce filas duplicadas (ambas serían (A, B) o (B, A) ), y DISTINCT se asegura de que no haya ninguno en el resultado final.