Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL zwingen, Duplikate aus der WHERE IN-Klausel zurückzugeben, ohne JOIN/UNION zu verwenden?

Ich bin mir nicht sicher, warum Sie JOIN verbieten wollen, da es für SQL ziemlich wichtig ist. Es ist wie das Verbot von Funktionsaufrufen in einer funktionalen Sprache.

Eine gute Möglichkeit, dies zu lösen, besteht darin, eine Ergebnismenge zu erstellen, die die IDs enthält, die Sie zurückgeben möchten, und sich damit zu verbinden. Hier ist eine Möglichkeit, dies zu tun:

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

Ich bin mir nicht sicher, ob Sie diese Methode in Betracht gezogen haben? Es hat keine der Probleme, vor denen Sie Angst zu haben scheinen.

Wenn Sie Joins verbieten, können Sie dies nicht tun, es sei denn, Sie verwenden eine gespeicherte Prozedur, was meiner Meinung nach schlimmer ist als Joining.