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

Oracle SQL - La clausola IN mostra tutti i record forniti in condizione IN anche quando i dati non sono presenti nella tabella

Hai bisogno di una tabella derivata che contenga tutte le possibilità. O ne hai uno, come un tavolo da città e poi puoi farlo:

SELECT t.customer_id,s.city
FROM city_table s
LEFT JOIN customer t
 ON(s.id = t.city) 
WHERE s.city IN ('abc', 'def', 'ghi')

Oppure genera tu stesso i valori:

SELECT t.customer_id,s.city
FROM (SELECT 'abc' as id FROM DUAL
      UNION ALL 
      SELECT 'def' FROM DUAL
      UNION ALL
      SELECT 'ghi' FROM DUAL) s
LEFT JOIN customer t
 ON(s.id = t.city) 
WHERE s.id IN('abc', 'def', 'ghi')