繁体   English   中英

使用 SQL 中的选择子查询结果从选择查询中过滤记录

[英]Filter records from select query using select subquery result in SQL

我有一个选择查询,从中我可以得到结果。 我还有一张桌子,上面有一些记录。 我希望我的第一个查询结果集应该过滤我从表中获取的记录。

主选择查询

select ri.pkResourceItemsID,r.locationTimeZone,ss.minBookingPeriod,r.fkBusinessUnitID,r.fkLocationId,r.floor from tblResourceItems ri WITH (NOLOCK)
inner join Enterprise.tblRooms r WITH (NOLOCK) on ri.pkResourceItemsID=r.roomID
inner join tblBusinessUnit bu WITH (NOLOCK) on r.fkBusinessUnitID=bu.pkBusinessUnitID 
inner join tblSiteSetup ss WITH (NOLOCK) on bu.pkBusinessUnitID=ss.fkBusinessUnitID 
where ri.active=1 
and ri.fkResourceID=1 
and r.fkresourceId=1 
and r.deliveryPoint=0 
and bu.deployment=1 
and bu.selfSelectRoom=0 
and bu.active=1 
and r.locationTimeZone = 'India Standard Time'

结果

在此处输入图片说明

第二个表

Select fkCondecoRoomID from SYNC.tblExternalRoomMaster where Active=1

结果

在此处输入图片说明

我添加了 AND 语句来过滤表结果,但它给了我一个错误。

and ri.pkResourceItemsID = (Select fkCondecoRoomID from SYNC.tblExternalRoomMaster where Active=1)

错误

子查询返回了 1 个以上的值。 当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的。

您只需要使用in而不是=如果子查询可以返回超过 1 行,这使得最后一部分查询类似于

and ri.pkResourceItemsID in (Select fkCondecoRoomID from SYNC.tblExternalRoomMaster where Active=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM