Mysql
 sql >> Database >  >> RDS >> Mysql

Forzare MySQL a restituire duplicati dalla clausola WHERE IN senza utilizzare JOIN/UNION?

Non sono sicuro del motivo per cui vuoi vietare JOIN poiché è abbastanza essenziale per SQL. È come vietare le chiamate di funzione in un linguaggio funzionale.

Un buon modo per risolvere questo problema è creare un set di risultati contenente gli ID che desideri restituire e unirti ad esso. Ecco un modo per farlo:

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

Non sono sicuro che tu abbia considerato questo metodo? Non ha nessuno dei problemi di cui sembri aver paura.

Se escludi i join non puoi farlo a meno che non utilizzi una stored procedure, che direi è peggio dell'adesione.