Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Forçar o MySQL a retornar duplicatas da cláusula WHERE IN sem usar JOIN/UNION?


Não sei por que você deseja banir o JOIN como bastante essencial para o SQL. É como banir chamadas de função em uma linguagem funcional.

Uma boa maneira de resolver isso é criar um conjunto de resultados contendo os ids que você deseja retornar e juntar-se a ele. Aqui está uma maneira de fazer isso:
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

Não tenho certeza se você considerou este método? Não tem nenhum dos problemas que você parece ter medo.

Se você banir junções, não poderá fazer isso a menos que use um procedimento armazenado, o que eu diria que é pior do que entrar.