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

Forcer MySQL à renvoyer les doublons de la clause WHERE IN sans utiliser JOIN/UNION ?

Je ne sais pas pourquoi vous voulez interdire JOIN car c'est assez essentiel pour SQL. C'est comme interdire les appels de fonction dans un langage fonctionnel.

Un bon moyen de résoudre ce problème consiste à créer un ensemble de résultats contenant les identifiants que vous souhaitez renvoyer et à joindre. Voici une façon de procéder :

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

Je ne sais pas si vous avez envisagé cette méthode? Il n'a aucun des problèmes dont vous semblez avoir peur.

Si vous interdisez les jointures, vous ne pouvez pas le faire à moins d'utiliser une procédure stockée, ce qui, je dirais, est pire que de joindre.