Как сохранить порядок, используя SELECT WHERE IN ()? - PullRequest
16 голосов
/ 11 мая 2010

Есть ли способ сохранить порядок при использовании SELECT WHERE IN ()? Например, используя следующий запрос:

SELECT id FROM data_table WHERE id IN(56,55,54,1,7);

Результаты будут возвращаться с использованием порядка по умолчанию по идентификатору. 1,7,54,55,56

Когда я хочу сохранить порядок, используемый в IN: 56,55,54,1,7

Есть ли быстрый способ сделать это в mySQL или я буду вынужден заказать его после кода?

Спасибо:)

Ответы [ 3 ]

40 голосов
/ 11 мая 2010

Использовать FIND_IN_SET :

ORDER BY FIND_IN_SET(id, '56,55,54,1,7')
3 голосов
/ 26 октября 2013
0 голосов
/ 11 мая 2010

Вы можете сделать UNION, который может вернуть заказ таким же образом.

НО:

Почему бы просто не заставить ваше приложение переупорядочивать результаты, когда оно их получает, а не заставлять БД это делать?

...