Общие > Базы данных

Простой SELECT по порядку

(1/1)

kiruxa:
Добрый день

возникла такая проблемка

есть группа 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 чтобы выбралося именно как надо

спасибо

ravshaniy:
Мне кажется правильнее добавить в таблицу поле по которому делать 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

--- Конец кода ---


но как я думаю это извраты. вместо простого селекта использование таких извратов скорее всего клиника

kiruxa:
Решил одним запросом

заработало и нфмного проще
мож кому пригодиться

SELECT *
FROM lu_country
WHERE id
IN ( 11, 33, 22, 55, 44 )
ORDER BY FIND_IN_SET( id, \'11, 33, 22, 55, 44\' )

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии