Originariamente inviato da il pupo
grazie
franzauker , funziona

...Per curiosità perchè è inefficiente quello che avevo scritto io ?
mysql è stupido e riesegue per ogni riga della select esterna la select interna.
Ovvero NON funziona come si potrebbe pensare, eseguendo una singola volta la query interna, sostituendo le righe ritornate.
Questo (in mysql) è veloce
codice:
select * from blablabla where campo IN (1,2,10,5,100,1000,20,50...)
questo invece è lento
codice:
select * from blablabla where campo IN (select blablabla...)
anzi è superlento fino a mysql 5.5, lento per 5.6
---
Va quindi bene se la query interna è piccola (veloce e ritorna poche righe), e la query esterna non ha molte righe a sua volta.
se puoi, lato applicazione, è comune fare due query diverse
1) quella interna, con un GROUP_CONCAT che ti ritorna le chiavi dei record, parcheggiate in una stringa, un array etc.
2) la query esterna dove c'è IN (stringasalvataprima)