Forum Webscript.Ru
Общие => Базы данных => Тема начата: kiruxa от 18 Марта 2008, 12:18:36
-
Добрый день
возникла такая проблемка
есть группа ID по которым надо сделать выборку
например - 11, 33, 22, 55, 44
Я делаю запрос
SELECT * FROM tbl WHERE id in (11, 33, 22, 55, 44)
Все правильно выбираеться только порядок не соблюден в fetch_array - выдаеться как находит по таблице 11,22,33,44,55 .... мне надо чтобы выбралось именно как я хотел ... 11, 33, 22, 55, 44 ... подскажите как прописать в ORDERe чтобы выбралося именно как надо
спасибо
-
Мне кажется правильнее добавить в таблицу поле по которому делать Order By. и для изменения порядка вам нужно будет всего лишь сделать UPDATE для этого поля. Это не накладное решение.
есть также вариант с использованием UNION
(SELECT * FROM tbl WHERE id = 11) UNOIN(SELECT * FROM tbl WHERE id = 22)UNOIN(...)
есть вариант с созданием временной таблицы, для мускула это выглядело бы так:
CREATE TEMPORARY TABLE tmpTable(
tmp_id INT(11) NOT NULL AUTO_INCREMENT,
id /*здесь определение вашего ида*/
);
INSERT tmpTable (id) VALUES (11,22...44);
SELECT t.*
FROM tbl t
INNER[FULL] JOIN tmpTable tt USING(id)
ORDER BY tt.tmp_id
но как я думаю это извраты. вместо простого селекта использование таких извратов скорее всего клиника
-
Решил одним запросом
заработало и нфмного проще
мож кому пригодиться
SELECT *
FROM lu_country
WHERE id
IN ( 11, 33, 22, 55, 44 )
ORDER BY FIND_IN_SET( id, \'11, 33, 22, 55, 44\' )