Ответ 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)
Когда я выбираю набор строк из таблицы с использованием IN, например
SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)
есть ли трюк SQL, чтобы вернуть их в порядке, указанном в наборе IN?
Итак, в примере, если x имеет строки с идентификаторами 23, 55, 44 и 12, эти четыре строки будут возвращены в этом порядке.
SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)
ORDER BY FIELD (x.id, 23, 55, 44, 12)
Вы можете использовать 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');