Возможно, это общеизвестный трюк, но раньше нигде не встречал.
Задача: выбрать из таблицы (с большим количеством записей) несколько определенных строк, в определенном порядке. То есть, известен список ID требуемых записей:
$ids = "50, 30, 10, 700, 900";
Надо выбрать эти пять записей, так, чтобы они шли именно в этом порядке.
Если использовать WHERE id IN ($ids), будут выбраны нужные записи, но порядок их следования будет случайным (скорее всего, они будут идти по возрастанию ID). Но если сделать так:
SELECT * FROM mytable WHERE id IN ($ids) ORDER BY FIELD(id,$ids)
т.е. после подстановки значений это будет
SELECT * FROM mytable WHERE id IN (50,30,10,700,900) ORDER BY FIELD(id,50,30,10,700,900)
Все работает как надо.
Я использовал этот способ на
Инфосфере, работает прекрасно. Надеюсь, кому-нибудь пригодится.