У MySQL есть функция FIELD(str,str1,str2,str3,...)
Насколько я понял, массив создаётся программно и далее передаётся мускулю, посему проще передать один запрос, нежели создавать временную таблицу.
На перле оно будет примерно так:
- Код: выделить все
sQL = "SELECT val1, val2, FIELD(val1, '".join( "','", @array )."' ) AS id FROM tab WHERE val1 IN('".join( "','", @array )."') ORDER BY id";
только не забудьте изначально проверять значения массива на предмет спецсимволов, чтобы не получилось потенциальной дыры в безопасности