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

Oracle SQL - Clause IN affiche tous les enregistrements donnés dans la condition IN même lorsque les données ne sont pas présentes dans la table

Vous avez besoin d'une table dérivée contenant toutes les possibilités. Soit vous en avez une, comme une table de ville et ensuite vous pouvez faire :

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')

Ou générez les valeurs vous-même :

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')