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

Откуда:
Сообщений: 59
Есть такой запросик, где в первой выборке данные, во 2-й условия для отбора.

with a as (select 0 as t union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9),
     b as (select '1' v union select '5' union select '7')        
     
select *
  from a 
 where a.t in (select v from b)


Это работает когда в условиях отбора одиночные значения, но как переделать результирующий запрос если в условиях список?

with a as (select 0 as t union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9),
     b as (select '1,2' v union select '5' union select '5, 7, 9')  


MSSQL2014
1 апр 16, 19:06    [19006616]     Ответить | Цитировать Сообщить модератору
 Re: условие запроса в другой таблице  [new]
iljy
Member

Откуда:
Сообщений: 8711
b00ring,

используйте exists
1 апр 16, 19:08    [19006622]     Ответить | Цитировать Сообщить модератору
 Re: условие запроса в другой таблице  [new]
b00ring
Member

Откуда:
Сообщений: 59
Можно ли сделать без UDF?
1 апр 16, 19:08    [19006623]     Ответить | Цитировать Сообщить модератору
 Re: условие запроса в другой таблице  [new]
iljy
Member

Откуда:
Сообщений: 8711
b00ring,

точнее, exists + like. UDF тут совершенно не нужен.
1 апр 16, 19:10    [19006630]     Ответить | Цитировать Сообщить модератору
 Re: условие запроса в другой таблице  [new]
b00ring
Member

Откуда:
Сообщений: 59
Что-то не соображу...
Дайте еще подсказку))
1 апр 16, 19:17    [19006652]     Ответить | Цитировать Сообщить модератору
 Re: условие запроса в другой таблице  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 27955
with a as (select 0 as t union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9),
     b as (select '1,2' v union select '5' union select '5, 7, 9')        
     
select *
  from a 
 where exists (select 1 from b where v LIKE '%' + CAST(a.t AS VARCHAR) + '%')
1 апр 16, 19:26    [19006691]     Ответить | Цитировать Сообщить модератору
 Re: условие запроса в другой таблице  [new]
b00ring
Member

Откуда:
Сообщений: 59
skyANA,

С такими данными в результатах появляется "0" :)

with a as (select 0 as t union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9),
     b as (select '1,2' v union select '5' union select '5, 7, 10')        
     
select *
  from a 
 where exists (select 1 from b where v LIKE '%' + CAST(a.t AS VARCHAR) + '%')
1 апр 16, 19:39    [19006746]     Ответить | Цитировать Сообщить модератору
 Re: условие запроса в другой таблице  [new]
b00ring
Member

Откуда:
Сообщений: 59
t
0
1
2
5
7
1 апр 16, 19:40    [19006749]     Ответить | Цитировать Сообщить модератору
 Re: условие запроса в другой таблице  [new]
iljy
Member

Откуда:
Сообщений: 8711
b00ring,

подсказку вам дали, условие в like доработайте, чтоб 0 из 10 отдельно не срабатывал.
1 апр 16, 19:49    [19006779]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить