SQL WHERE .. IN предложение несколько столбцов - PullRequest
151 голосов
/ 16 июля 2009

Мне нужно реализовать следующий запрос в SQL Server:

select *
from table1
WHERE  (CM_PLAN_ID,Individual_ID)
IN
(
 Select CM_PLAN_ID, Individual_ID
 From CRM_VCM_CURRENT_LEAD_STATUS
 Where Lead_Key = :_Lead_Key
)

Но предложение WHERE..IN допускает только 1 столбец. Как я могу сравнить 2 или более столбцов с другим внутренним SELECT?

Ответы [ 13 ]

0 голосов
/ 16 сентября 2013

Если вы хотите одну таблицу, используйте следующий запрос

SELECT S.* 
FROM Student_info S
  INNER JOIN Student_info UT
    ON S.id = UT.id
    AND S.studentName = UT.studentName
where S.id in (1,2) and S.studentName in ('a','b')

и данные таблицы следующим образом

id|name|adde|city
1   a   ad  ca
2   b   bd  bd
3   a   ad  ad
4   b   bd  bd
5   c   cd  cd

Затем выведите как следует

id|name|adde|city
1   a   ad  ca
2   b   bd  bd
0 голосов
/ 20 сентября 2012

Простым и неправильным способом было бы объединить два столбца, используя + или объединить и сделать один столбец.

Select *
from XX
where col1+col2 in (Select col1+col2 from YY)

Это было бы довольно медленно. Не может использоваться в программировании, но если в этом случае вы просто запрашиваете что-то для проверки, может быть использовано.

0 голосов
/ 08 марта 2010

Так я нашел проще

Select * 
from table1 
WHERE  (convert(VARCHAR,CM_PLAN_ID) + convert(VARCHAR,Individual_ID)) 
IN 
(
 Select convert(VARCHAR,CM_PLAN_ID) + convert(VARCHAR,Individual_ID)
 From CRM_VCM_CURRENT_LEAD_STATUS 
 Where Lead_Key = :_Lead_Key 
) 

Надеюсь, эта помощь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...