Заказ MySQL результатов по последовательности IN?

Когда я выбираю набор строк из таблицы с использованием IN, например

SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)

есть ли трюк SQL, чтобы вернуть их в порядке, указанном в наборе IN?

Итак, в примере, если x имеет строки с идентификаторами 23, 55, 44 и 12, эти четыре строки будут возвращены в этом порядке.

Ответ 1

SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)
ORDER BY FIELD (x.id, 23, 55, 44, 12)

Ответ 2

Вы можете использовать FIND_IN_SET как:

SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)
ORDER BY FIND_IN_SET(x.id,'23, 55, 44, 12');