MySQL ORDER BY IN ()

SELECT * 
FROM courses 
WHERE DATE_ADD(NOW(), INTERVAL 2 HOUR) > start_time

См. Функции Даты и времени для другого управления датой/временем.

63
задан raven 4 September 2009 в 15:14
поделиться

4 ответа

Думаю, вы ищете функцию FIELD - хотя обычно ее считают строковой функцией, она также отлично работает для чисел!

ORDER BY FIELD(field_name, 3,2,5,7,8,1)
140
ответ дан 24 November 2019 в 16:13
поделиться

Вы можете использовать FIELD () :

ORDER BY FIELD(id, 3,2,5,7,8,1)

Возвращает индекс (позицию) str в списке str1, str2, str3, ... Если str не найдена, возвращает 0.

Это некрасивый хакер, поэтому на самом деле используйте его, только если у вас нет другого выбора. Сортировка вывода в вашем приложении может быть лучше.

8
ответ дан 24 November 2019 в 16:13
поделиться

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

SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID

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

Если вы не против объединяя длинные запросы, попробуйте следующий способ:

SELECT ID FROM myTable WHERE ID=1
UNION
SELECT ID FROM myTable WHERE ID=3
UNION
SELECT ID FROM myTable WHERE ID=2
-3
ответ дан 24 November 2019 в 16:13
поделиться

Стандартный SQL не предоставляет способа сделать это (MySQL может, но я предпочитаю решения, которые не зависят от поставщика, поэтому я могу переключить СУБД в любое время).

Это кое-что. вы должны выполнить постобработку после того, как будет возвращен набор результатов. SQL может возвращать их только в порядке, указанном в предложении «порядок по» (или в любом порядке, если такого предложения нет).

Другая возможность (хотя мне это не нравится, я Имею честь предоставить вам выбор) состоит в том, чтобы сделать несколько обращений к базе данных, по одному для каждого идентификатора, и обрабатывать их по мере поступления:

select * from tbl where article_id = 4;
// Process those.
select * from tbl where article_id = 7;
// Process those.
: : : : :
select * from tbl where article_id = 9;
// Process those.
0
ответ дан 24 November 2019 в 16:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: