У меня результат запроса выдает всегда 5 значений, но я хочу что бы они выводились в определенном порядке например что то типа такого: Код (Text): SELECT `cat_id`,`cat_name`,`cat_pic` FROM `cats` ORDER BY `cat_id`={1,75,32,65,89}
Код (Text): SELECT `cat_id`,`cat_name`,`cat_pic` FROM `cats` ORDER BY `cat_id` так и выведет 1,15,32,65,89
Нет, надо именно так как я указал {1,75,32,65,89} то есть что бы сначала шла 1 потом 75 а потом 32 и т.д. Это я сначала не верно записал, а потом исправил...
Увы, вариант только один - использовать функции. Например, FIELD(). Можно ещё использовать временную таблицу, но это будет "стрельба из пушки по воробьям".
А вы так сделайте: $eternal_query_result=array(1,75,32,65,89); И у вас всегда будет порядок. UPD, кажись понял, у него идешники типа все заранее известны. Ну это просто Код (Text): @link->query('select * from some where id in(1,75,32,65,89);'); Теоретически порядок не гарантирован, но практически он всегда соблюдается. То есть вы получите указанное количество записей в том порядке появления их ид в списке in()
Очень похоже, что сам вопрос возник как "обходное решение", чтобы не исправлять косяки в логике. Но буквальный ответ может быть таким: Код (PHP): SELECT … ORDER BY FIELD(`cat_id`, 1,75,32,65,89) или Код (PHP): SELECT … ORDER BY FIND_IN_SET(`cat_id`, '1,75,32,65,89')
Напоминает интересную задачу, которая правда чуть о другом и посложнее. Где нужно сделать рандомную выборку при этом чтобы записи с "весовым" полем были в выборке выше остальных.
ну в этом случае напрашивается вложенность (или вывод во врменную таблицу — что почти одно и то же). сортировать уже малый набор.
За такие "ответы"/утверждения надо навечно отлучать от программирования. Добавлено спустя 1 минуту 16 секунд: Вы о чём?
Нууу... В принципе бывает, что подобные запросы используются. Не по ИД конечно, по другим параметрам, но бывает изредка.
ну вот я и говорю, что не по id. Если у него есть критерий, по которому он эти id у себя в голове выстроил, то пусть по нему и сортирует.
Почему, я недавно видел такой вариант в связки со сфинксом. Его поручили прикрутить к моей системе более опытного программиста. Как я понимаю, сфинкс возвращает ID в порядке по релевантности, а потом по ним надо было получить объекты ORM в системе, и в запросе как раз я увидел ORDER BY FIELD(`id`, ...)
Не важно какой вопрос, важно какой ответ. IN не создаёт упорядоченности, никогда. IN это короткая запись ...or...or... И да, судя по ответу, Вы плохо понимаете работу mySQL, - стоит подтянуть. В частности, для ответа в каком порядке фактически возвращаются записи, если нет ORDER BY (в частном случае конкретного движка).