Помогите составить MySQL-запрос
11416 сообщений
#14 лет назад
Есть такой запрос:SELECT * FROM category WHERE id IN ($category)
Где в $category содержится 1,3,7,2,12,46,24
Может быть любое количество чисел в любом порядке
И вот значит мне нужно отсортировать в таком порядке по id как указано в $category. Можно ли как-то такое сделать?
1895 сообщений
#14 лет назад
Оно так и будет, выборка же и идет по In вложености, разве не так?Если нет, то можно еще айде категорий засунуть в вложенный запрос и думаю дальше разрулите)
11416 сообщений
#14 лет назад
Нет, в таком случае выборка сортируется по idЦитата ("MMM_Corp"):
можно еще айде категорий засунуть в вложенный запрос и думаю дальше разрулите
Чего то не пойму как

2817 сообщений
#14 лет назад

SELECT * FROM `modx_location_city` WHERE `city_id` IN (13,15,20,14,11,10) ORDER BY (case `city_id` when 13 then 1 when 15 then 2 when 20 then 3 when 14 then 4 when 11 then 5 when 10 then 6 end)
Вот как вариант (тестил своей таблицей )
Но если таких ид для выборки больше сотни - может лучше делать с результата выборки массив (в целях производительности), а потом вибирать по порядку с 13 по 10 (как у меня) и так образовать упорядоченный результат в массиве согласно нужному порядку.
92 сообщения
#14 лет назад
Можно такSET @i=0;
SELECT *,(@i:= @i+1) as ord FROM category WHERE Active IN ($category) ORDER BY ord
Цитата ("kirilev"):
SELECT * FROM `modx_location_city` WHERE `city_id` IN (13,15,20,14,11,10) ORDER BY (case `city_id` when 13 then 1 when 15 then 2 when 20 then 3 when 14 then 4 when 11 then 5 when 10 then 6 end)
Вот как вариант (тестил своей таблицей )
Но если таких ид для выборки больше сотни - может лучше делать с результата выборки массив (в целях производительности), а потом вибирать по порядку с 13 по 10 (как у меня) и так образовать упорядоченный результат в массиве согласно нужному порядку.
ох вас и понесло
2817 сообщений
#14 лет назад
msdn11, Ваш вариант не сортирует в порядке следования чисел как в IN (..)
92 сообщения
#14 лет назад
Не дочитал задание. Тогда еще проще SELECT * FROM category WHERE id IN ($category) ORDER BY FIELD(id, $category)
11416 сообщений
#14 лет назад
Вот как даже... Не знал, не знал такое...msdn11, спасибо огромное... Век живи - век учись...