sql >> Databasteknik >  >> RDS >> Mysql

Tvinga MySQL att returnera dubbletter från WHERE IN-satsen utan att använda JOIN/UNION?

Jag är inte säker på varför du vill förbjuda JOIN eftersom det är ganska viktigt för SQL. Det är som att förbjuda funktionsanrop på ett funktionellt språk.

Ett bra sätt att lösa detta är att skapa en resultatuppsättning som innehåller de ID du vill returnera och gå med i den. Här är ett sätt att göra det:

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

Jag är inte säker på om du har övervägt den här metoden? Den har inga av de problem som du verkar vara rädd för.

Om du förbjuder anslutningar kan du inte göra detta om du inte använder en lagrad procedur, vilket jag skulle säga är värre än att gå med.




  1. Hur många signifikanta siffror ska jag lagra i min databas för en GPS-koordinat?

  2. Hur krymper man temporärt bordsutrymme i Oracle?

  3. FGCB_ADD_REMOVE-spärren

  4. MySQL välj en kolumn DISTINCT, med motsvarande andra kolumner