Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Select по порядку  [new]
Lexx_SQL
Member

Откуда:
Сообщений: 566
Добрый день!
Необходимо выполнить нестрогий поиск по нескольким значениям и получить результат множеств в том же порядке.
SELECT * from [dbo].[T]
where Name like '%606%'
OR Name like '%607%'

Результат должен выводиться:
сначала множество Name like '%606%'- желательно отсортированное внутри
затем множество Name like '%607%'- желательно отсортированное внутри
Я делал через добавление поля индекса в запросе выбора и UNION select.
Как все сделать в одном select?
Спасибо.
14 ноя 14, 12:52    [16845588]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lexx_SQL
Как все сделать в одном select?

Использовать ORDER BY
14 ноя 14, 12:54    [16845618]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
SELECT * FROM [dbo].[T]
WHERE Name LIKE '%60[67]%'
ORDER BY CASE WHEN Name LIKE '%606%' THEN 1 WHEN Name LIKE '%607%' THEN 2 END;
14 ноя 14, 12:58    [16845661]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
Lexx_SQL
Member

Откуда:
Сообщений: 566
Glory,
по какому полю сортировать?
Нужно выводить в порядке какой стоит в условии и причем еще сортировать внутри каждго множества.
Все решается, если сделать доп. поле и добавлять туда значение условия. Но как так сделать я пока не понимаю.
14 ноя 14, 12:58    [16845670]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lexx_SQL
по какому полю сортировать?

По факту наличия Name той или иной подстроки
14 ноя 14, 13:00    [16845690]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
Lexx_SQL
Member

Откуда:
Сообщений: 566
iap,
к сожалению значение Name - неизвестно....
14 ноя 14, 13:00    [16845694]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lexx_SQL
к сожалению значение Name - неизвестно....

Кому неизвестно ?
14 ноя 14, 13:01    [16845699]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
iap
SELECT * FROM [dbo].[T]
WHERE Name LIKE '%60[67]%'
ORDER BY CASE WHEN Name LIKE '%606%' THEN 1 WHEN Name LIKE '%607%' THEN 2 END;
Вот только на месте процентов тоже могут появляться и '606' и '607' в самом различном порядке.
Ведь одно условие не противоречит другому, строки могут удовлетворять обоим.
14 ноя 14, 13:01    [16845703]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Lexx_SQL
iap,
к сожалению значение Name - неизвестно....
Тогда сформулируйте задачу ещё раз. В стартовом вопросе имена шаблонов для поиска были известны.
14 ноя 14, 13:02    [16845710]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20607
iap
на месте процентов тоже могут появляться и '606' и '607' в самом различном порядке.
Ведь одно условие не противоречит другому, строки могут удовлетворять обоим.

И что? CASE прекращает выполнение на первом же истинном условии. Соответственно запись будет помещена в первую из подходящих групп.
14 ноя 14, 13:08    [16845774]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Akina
iap
на месте процентов тоже могут появляться и '606' и '607' в самом различном порядке.
Ведь одно условие не противоречит другому, строки могут удовлетворять обоим.

И что? CASE прекращает выполнение на первом же истинном условии. Соответственно запись будет помещена в первую из подходящих групп.
Так автору это и надо, разве нет?

Или нужно помещать найденные записи в каждую группу? Тогда только UNION ALL
14 ноя 14, 13:11    [16845805]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
Lexx_SQL
Member

Откуда:
Сообщений: 566
Спасибо.
Сделал так:
SELECT Name,CASE WHEN Name LIKE '%606%' THEN 1 WHEN Name LIKE '%607%' THEN 2 END as ind from [dbo].[PriceGeneral]
where Name like '%606%' OR Name like '%607%'
ORDER BY ind,Name
14 ноя 14, 13:11    [16845806]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Akina
iap
на месте процентов тоже могут появляться и '606' и '607' в самом различном порядке.
Ведь одно условие не противоречит другому, строки могут удовлетворять обоим.

И что? CASE прекращает выполнение на первом же истинном условии. Соответственно запись будет помещена в первую из подходящих групп.
Кто его знает?
Может, раньше должны следовать строки, в которых соответствующая подстрока встечается ближе к началу, например?
14 ноя 14, 13:13    [16845821]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Lexx_SQL
Спасибо.
Сделал так:
Решили отсортировать просто по имени? :-)

Непонятно, зачем задавать вопрос, если вам это не нужно было.
14 ноя 14, 14:09    [16846355]     Ответить | Цитировать Сообщить модератору
 Re: Select по порядку  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
alexeyvg
Lexx_SQL
Спасибо.
Сделал так:
Решили отсортировать просто по имени? :-)

Непонятно, зачем задавать вопрос, если вам это не нужно было.
Там вроде по CASE сначала (через алиас).
Но два LIKE вместо одного!
14 ноя 14, 14:11    [16846373]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить