Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Сортировка результатов запроса  [new]
LJoni
Guest
Вообщем есть таблица table1 с полями id,name.
Нужно выбрать все записи, которые соответствуют условию name like '%значение%'.
Но результат нужно отсортировать таким образом, что бы вначале были строки которые соответствую условию name like 'значение'
за ними name like 'значение%' ну и в конце name like '%значение%'.

Пробовал через union

(select * from table1 where name like 'значение') union 
(select * from table1 where name like 'значение%') union
(select * from table1 where name like '%значение%')

Но сортировкой даже не пахнет.

Пробовал вот так:
select * from (
(select id,name,1 as lev from table 1 where name like 'значение') union
(select id,name,2 as lev from table 1 where name like 'значение%') union
(select id,name,3 as lev from table 1 where name like %'значение%')
) order by lev

Но тогда появляются дублирующиеся записи. Distinct тоже не помогает, так как появляется lev который в каждом подзапросе разный.
Помогите решить задачку
2 апр 11, 00:15    [10460384]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка результатов запроса  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
select * from table1 where name like '%значение%' order by case when name = 'значение' then 1 when name like 'значение%' then 2 else 3 end
2 апр 11, 00:29    [10460419]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить