Пользовательская сортировка в SQLite

dma84
На сайте с 21.04.2009
Offline
168
1066

В общем, есть таблица с N записями, нужно сделать обычную выборку из таблицы, чтобы поле с определённым id было первым в результате, а остальные остались как есть.

Таблица в БД

поле1

поле2

поле3

...

поле4

После выборки нужно получить что-то вроде этого

поле3

поле1

поле2

...

поле10

В MySql есть что-то типа ORDER BY FIELD(id,1,5,2,3,4), в SQLite это не работает.:gm:

М
На сайте с 08.02.2006
Offline
59
#1

SELECT CASE WHEN id=3 THEN 1 [WHEN id=10 THEN 2] ELSE 99 END sortorder ... ORDER BY sortorder,id

dma84
На сайте с 21.04.2009
Offline
168
#2

В SQLite CASE не канает

Polimer
На сайте с 01.09.2006
Offline
84
#3

Проще всего, наверное, пойти по такому пути:

SELECT 0 AS sorder, id, field1, fieldN FROM table1 WHERE id=3

UNION ALL
SELECT 1 AS sorder, id, field1, fieldN FROM table1 WHERE id<>3
ORDER BY sorder ASC, id ASC
Программные решения для бизнеса. (http://frontsoft.ru/) На заказ. Дорого.
dma84
На сайте с 21.04.2009
Offline
168
#4

Спасибо, работает.

Честно говоря, тоже думал об объединении 2-х запросов к из одной таблицы, хотя надеялся на вариант попроще.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий