【发布时间】:2014-10-06 08:58:17
【问题描述】:
我有一个使用子查询来确定某些值的查询。当第二个子查询中只有一个结果时,它运行良好,但是当第二个子查询中有多个可能的结果时,它会失败并显示
消息 512,级别 16,状态 1,第 1 行子查询返回超过 1 个 价值。当子查询跟在 =, !=, = 或当子查询被用作表达式错误时。
我想为第二个子查询标识的多个值中的每一个插入一条记录。
我的代码如下:
Declare @RoomID char (11)
Select @RoomID = min (RoomID) from tbRoom
While @RoomID is not null
begin
INSERT INTO [dbo].[tbSurveyLocation]
([SurveyUID]
,[LocationParentID]
,[LocationID]
,[Comment]
,[SurveyParentTypeID]
,[CanSurvey]
,[Surveyed]
,[Status]
,[LastUpdate]
,[LastUpdateUser]
,[ClientCode])
VALUES
((SELECT SurveyUID FROM tbSurvey where SurveyTitle = 'CARLISLE PARK CRICKET PAVILLION')
,30
,(SELECT tbRoom.RoomID FROM tbBuilding INNER JOIN
tbBuildingLinkBusinessUnit ON tbBuilding.BuildingID = tbBuildingLinkBusinessUnit.BuildingID INNER JOIN
tbBusinessUnit ON tbBuildingLinkBusinessUnit.BusinessUnitID = tbBusinessUnit.BusinessUnitID INNER JOIN
tbFloor ON tbBuilding.BuildingID = tbFloor.BuildingID INNER JOIN
tbRoom ON tbFloor.FloorID = tbRoom.FloorID
WHERE tbBusinessUnit.BusinessUnitName like '%CARLISLE PARK CRICKET PAVILLION%')
,'',203 ,1,1,0,CONVERT(DATETIME, '10/01/2014 00:00', 102),'PDS 2014','~K2~')
end
我在这里检查了其他类似的答案,但根据我的情况,找不到与各种子查询直接相关的任何内容。
【问题讨论】:
-
this: stackoverflow.com/questions/13830312/… 否则,为什么不先获取“子查询”,将其添加到列表中,然后执行第二个“主”查询?
-
谢谢,但我试过了,显然一定是弄错了,因为我仍然遇到同样的错误。至于子查询/列表选项,我对此很陌生,不知道有多抱歉。感谢您抽出时间回复
-
我已经修改了代码,以便获取每条记录(感谢您的指点)。我如何限制查询所花费的时间,因为它需要很长时间才能遍历 10000 条可能的记录?谢谢
-
添加索引怎么样?
标签: sql sql-server-2008 sql-insert