2010-11-30 2 views
6

Я использовал запрос mysql, где есть« где id в («22,20,21») « , но когда я получаю в результате свой массив, упорядоченный по порядку, т.е. 20,21, 20", где в разделе" mysql "

, но мне это нужно в том же порядке, как я дал статью

+0

Что такое полный запрос? – cambraca 2010-11-30 06:11:58

+0

Возможный дубликат [Как я могу заказать результат запроса так же, как идентификатор, указанный в условии WHERE?] (Http://stackoverflow.com/questions/3984531/how-can-i-order-a-query-result- same-as-id-defined-in-the-where-condition) – deceze 2010-11-30 06:14:52

+0

Я согласен с @deceze, что это дубликат. не видел вашего ответа или, вероятно, указал бы ему в этом направлении. – 2010-11-30 06:20:09

ответ

18

я думаю вы должны быть в состоянии использовать поле ключевое слово так:

SELECT * FROM table 
WHERE id in (22,20,21) 
ORDER BY FIELD(id,22,20,21); 

это MySQL специфический, и кажется волшебным, но это работает.

2

результаты SQL является неупорядоченным, если не дано явным упорядочивание; заказ не будет снят с пункта in.

Поскольку идентификаторы не являются ни ASC, ни DESC, вам нужно будет ORDER BY что-то еще; как вы определяете порядок 22,20,21?

0

Вы не можете указать, что результаты заказа будут возвращены в пункте WHERE. Если вы хотите указать порядок, вам нужно добавить предложение ORDER BY в ваш запрос. Для решения, которое использует FIND_IN_SET, см. this answer.

2

Как указано ... WHERE Статья не делает ничего с заказом набора результатов. Используйте MySQL built-in FIELD function в ORDER BY пункте, чтобы указать, как результирующий набор должен быть заказан:

... WHERE id IN (22, 20, 21) ORDER BY FIELD(id, 22, 20, 21) ... 
0

В целом, система баз данных возвращает результаты в любом порядке, он чувствует, как. Если вы хотите, чтобы это было заказано, вы должны это сказать. This blog post предоставляет один способ для этого; вы можете найти другие решения в Интернете.

Смежные вопросы