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

Oracle SQL - Cláusula IN muestra todos los registros dados en condición IN incluso cuando los datos no están presentes en la tabla

Necesita una tabla derivada que contenga todas las posibilidades. O tienes uno, como una tabla de ciudad y luego puedes hacer:

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

O genere los valores usted mismo:

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