【发布时间】:2016-04-08 07:52:00
【问题描述】:
我有一个基于两个值参数(contcode、datime)运行的长查询。 我正在使用这个 while 循环从另一个表中按顺序获取这些值,运行查询并将结果插入到最终表中:
DECLARE @r TABLE (id int IDENTITY (1,1),lnr char (9), pday datetime)
INSERT INTO @r (lnr, pday)
SELECT TOP 1 lnr, pday FROM memrepay
DECLARE @counter int SET @counter = 1
DECLARE @contcode char (9)
DECLARE @datime datetime
WHILE @counter <= (SELECT COUNT(*) FROM @r)
BEGIN
--long query
END
SET @counter = @counter + 1
END
SELECT * FROM @finaltable
但是长查询仅在我获取 1 行时才有效:
SELECT TOP 1 contcode, datime FROM @tbl
如果我不使用 TOP 1,我会收到以下错误消息:
"Subquery returned more than 1 value...."
如何按顺序获取这两个或多个值,运行基于 each 的长查询,而不出现此错误?
【问题讨论】:
-
我认为您应该通过 Code 的长查询加入您的代码表
SELECT code, datime FROM @tbl where ...。 -
最好是更改内部查询以处理一组代码和日期时间,而不是一次处理 1 个。您能否向我们展示一下“长查询”的样子?
-
@Squirrel 谢谢,我会尝试更改长查询来处理一组代码...
-
@Max 你能解释一下吗
-
你必须解决你当前的脚本。向我们展示你的长查询。总之你的方法是错误的。不需要循环。检查为什么你的长查询返回超过 1 条记录而不使用顶部。跨度>
标签: sql sql-server tsql