sql >> Base de Datos >  >> RDS >> Mysql

¿Obligar a MySQL a devolver duplicados de la cláusula WHERE IN sin usar JOIN/UNION?

No estoy seguro de por qué desea prohibir JOIN ya que es bastante esencial para SQL. Es como prohibir las llamadas a funciones en un lenguaje funcional.

Una buena manera de resolver esto es crear un conjunto de resultados que contenga los ID que desea devolver y unirse a él. Esta es una forma de hacerlo:

SELECT Table1.*
FROM Table1
JOIN (SELECT 1 AS id
      UNION ALL SELECT 2
      UNION ALL SELECT 3
      UNION ALL SELECT 4
      UNION ALL SELECT 5
      UNION ALL SELECT 1
      UNION ALL SELECT 2
      UNION ALL SELECT 5
      UNION ALL SELECT 5) AS T1
ON Table1.id = T1.id

No estoy seguro si ha considerado este método? No tiene ninguno de los problemas que pareces temer.

Si prohíbe las uniones, no puede hacerlo a menos que use un procedimiento almacenado, que diría que es peor que unirse.