Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle SQL - Cláusula IN exibe todos os registros fornecidos na condição IN, mesmo quando os dados não estão presentes na tabela


Você precisa de uma tabela derivada contendo todas as possibilidades. Ou você tem um, como uma tabela de cidades e então você pode fazer:
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 gere os valores você mesmo:
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')