sql while循环语句问题

语句如下,其中表名为water,其中有列名z(数值型),tm(时间类型)。我定义一个整数变量id,想通过循环控制,查找出与当前时间最接近的数据集。DECLARE@idin... 语句如下,其中表名为water,其中有列名z(数值型), tm(时间类型)。我定义一个整数变量id,想通过循环控制,查找出与当前时间最接近的数据集。

DECLARE @id int
SET @id = 1 WHILE 'z' IS NULL
SELECT *
FROM WATER
WHERE (TM = CONVERT(varchar(20), DATEADD(ss, - @id, GETDATE()), 20))
SET @id = @id + 1
为什么执行出来结果是:‘1行被上次查询影响’。怎么修改呢?谢谢
展开
 我来答
禄修洁吕阔
2020-02-20 · TA获得超过3万个赞
知道大有可为答主
回答量:9850
采纳率:27%
帮助的人:908万
展开全部
这个不用while,用while简直是浪费资源,而且也慢,用语句就行了~
insert
into
新表
select
*
from

一句搞定,还可以自己加where条件做筛选插入~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
handsomemank
2011-06-28 · TA获得超过130个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:183万
展开全部
。。。。找 当前时间最近的 不用这么麻烦吧 ?
select * from water order by datediff(getdate(),tm)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FreeSoftnc
2011-06-28 · TA获得超过118个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:271万
展开全部
按这样的试试:
DECLARE @tid int
SET @tid = 1
while @tid<100
begin
SELECT * FROM 客户 WHERE id=@tid
SET @tid = @tid + 1
continue
end
追问
还是一样的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JINYUTTT
2011-06-28 · TA获得超过178个赞
知道小有建树答主
回答量:792
采纳率:0%
帮助的人:550万
展开全部
错了,whlie 'z' is null b表示z字符不为空,一直为真。后面根本没有什么关系。
更多追问追答
追问
我的想法是:z为空,则进行循环;如果找到z,则退出循环。
不能这样写吗?
追答
嗯,你那是z字符了。你的id有什么用呢? 加1了没有用过,呵呵。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式