2010-09-16 6 views
3

У меня есть этот запрос:Сортировка SQL записей на основе согласованных условий

SELECT * FROM table WHERE key LIKE '1,2,3,%' OR key LIKE '1,2,%' OR key LIKE '1,%' 

ли это Возможное для сортировки записей, возвращаемых из этого запроса, на основании которого был подобран первые условия. Я хотел бы получить все записи, которые соответствуют key LIKE '1,2,3,%', а затем key LIKE '1,2,%' и другие после.

Например, если у меня есть эти записи:

key: "1,2,3,4" 
key: "1,2,5" 
key: "1,4" 
key: "1,2,5,6" 
key: "1,3" 
key: "1,2,3,4,7" 
key: "1,2,4" 

Я хотел бы, чтобы они были отсортированы так:

key: "1,2,3,4" 
key: "1,2,3,4,7" 
key: "1,2,4" 
key: "1,2,5" 
key: "1,2,5,6" 
key: "1,3" 
key: "1,4" 

Можно ли это сделать?

+0

Ну, что вы пробовали? Обратите внимание, что это просто нормальная лексическая сортировка строк ... – 2010-09-16 19:37:09

+0

Ваш запрос является избыточным. используя только «WHERE key LIKE» 1,% '»даст вам те же результаты. –

+0

@ Кевин, да, вы абсолютно правы. Поскольку теперь я использую более конкретные условия в «ORDER BY CASE», теперь я изменил условие WHERE на «1,%». – remi

ответ

2

.... ORDER BY CASE
WHEN key LIKE '1,2,3,%' THEN 1
WHEN key LIKE '1,2,%' THEN 2
ELSE 3
END

+0

Я бы использовал это, как мне было известно. –

+0

Спасибо! Это именно то, что я использовал. Мне кажется, что использование полнотекстового поиска является слишком ресурсоемким для этого конкретного случая. – remi

1

Может ли использование «СОЮЗА» выполнить эту работу?

SELECT * из таблицы, где клавиша, например, '1,2,3,%' СОЕДИНЕНИЯ SELECT * из таблицы, где клавиша, например, '1,2,%' СОЕДИНЕНИЯ SELECT * из таблицы, где ключ LIKE ключа LIKE ' 1,% '

Смежные вопросы