选择/搜索多个表中的多个值,仅返回匹配的个案

时间:2016-03-13 11:13:52

标签: sql sql-server

Dears请帮我传递多个CP以从下表中的任何一个查找Process ID。

我想做这样的事情:

declare @CP varchar(30)
Set @CP ='684980','123123','456456'

select ESuser.tb_pt_servicerequest.process_instance_id, ESuser.tb_pt_servicerequest.cpno
from
ESuser.tb_pt_servicerequest where ESuser.tb_pt_servicerequest.cpno in (@CP)

union all

select ESuser.tb_pt_additionalcp.process_instance_id, ESuser.tb_pt_additionalcp.cpno
from
ESuser.tb_pt_additionalcp where ESuser.tb_pt_additionalcp.cpno in (@CP)

或者喜欢这个

select * from XXXX, WWW, MMMM, KKK where CP_NO in ('123123','123321','123567')

使用这个, 但是在这里我无法传递多个cp号来获得回报: 现在在这个变量中我可以传递一个值,如' 123123'并且可以得到结果, 但如果我将查询更改为喜欢(' 123123',' 123321')而不是=(' 123123'), 我无法得到结果。 :(

declare @CP varchar(10)
Set @CP ='684980  '

select ESuser.tb_pt_servicerequest.process_instance_id, ESuser.tb_pt_servicerequest.cpno
from
ESuser.tb_pt_servicerequest where ESuser.tb_pt_servicerequest.cpno = @CP

union all

select ESuser.tb_pt_additionalcp.process_instance_id, ESuser.tb_pt_additionalcp.cpno
from
ESuser.tb_pt_additionalcp where ESuser.tb_pt_additionalcp.cpno = @CP

union all

select ESuser.tb_pt_new_addtionalcp.process_instance_id,         ESuser.tb_pt_new_addtionalcp.cpno
from
ESuser.tb_pt_new_addtionalcp where ESuser.tb_pt_new_addtionalcp.cpno = @CP

union all

select ESuser.tb_pt_vip_service_request.process_instance_id,
ESuser.tb_pt_vip_service_request.cpno
from
    ESuser.tb_pt_vip_service_request where ESuser.tb_pt_vip_service_request.cpno = @CP

union all

select
ESuser.tb_pt_vip_additional_cp.process_instance_id,ESuser.tb_pt_vip_additional_cp.cpno
from
ESuser.tb_pt_vip_additional_cp where ESuser.tb_pt_vip_additional_cp.cpno = @CP

union all

select ESuser.tb_pt_servicerequestbypass.process_instance_id, ESuser.tb_pt_servicerequestbypass.cpno
from
ESuser.tb_pt_servicerequestbypass where ESuser.tb_pt_servicerequestbypass.cpno = @CP

1 个答案:

答案 0 :(得分:1)

您必须使用表变量。这就是你如何声明并填充它:

DECLARE @CP TABLE (CP_ID VARCHAR(10))
INSERT INTO @CP VALUES ('123123'),('123321'),('123567')

这就是你在查询中使用它的方法:

SELECT ESuser.tb_pt_servicerequest.process_instance_id, 
       ESuser.tb_pt_servicerequest.cpno
FROM ESuser.tb_pt_servicerequest 
WHERE ESuser.tb_pt_servicerequest.cpno IN (SELECT CP_ID FROM @CP)
相关问题