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

Откуда:
Сообщений: 351
Приветствую всех!

как можно написать грамотно запрос для выборке по паре параметров, пара не одна, а список, то есть
написать что то типа:
select * from t where id in(....)

но для полей a,b

select * from t where a,b in((1,2),(3,1)...(100,-1))


дополняющий вопрос как это можно решить с применением параметров, так как пар может быть большое количество
и все может не влезть в запрос

делать такой запрос накладно
select * from t where (a=1 and b=2)or(a=3 and b=1)...or(a=100 and b=-1)
9 сен 16, 10:30    [19646138]     Ответить | Цитировать Сообщить модератору
 Re: SELECT по списку из двух и более ключей  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37139
Сложить пары во времянку и написать exists/join
9 сен 16, 10:31    [19646147]     Ответить | Цитировать Сообщить модератору
 Re: SELECT по списку из двух и более ключей  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
WHERE EXISTS
(
 SELECT a,b
 INTERSECT
 SELECT a,b FROM(VALUES (1,2),(3,1)...(100,-1))T(a,b)
)
9 сен 16, 10:34    [19646162]     Ответить | Цитировать Сообщить модератору
 Re: SELECT по списку из двух и более ключей  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
WHERE EXISTS (SELECT * FROM(VALUES (1,2),(3,1)...(100,-1))U(a,b) WHERE U.a=t.a AND U.b=t.b)
Однако, надо ещё усложнить для значений NULL.
Вариант с INTERSECT этого не требует.
9 сен 16, 10:37    [19646173]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить