sql while循环语句问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql while循环语句问题相关的知识,希望对你有一定的参考价值。

语句如下,其中表名为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行被上次查询影响’。怎么修改呢?谢谢

参考技术A 这个不用while,用while简直是浪费资源,而且也慢,用语句就行了~
insert
into
新表
select
*
from

一句搞定,还可以自己加where条件做筛选插入~
参考技术B 。。。。找 当前时间最近的 不用这么麻烦吧 ?
select * from water order by datediff(getdate(),tm)本回答被提问者采纳
参考技术C 按这样的试试:
DECLARE @tid int
SET @tid = 1
while @tid<100
begin
SELECT * FROM 客户 WHERE id=@tid
SET @tid = @tid + 1
continue
end追问

还是一样的结果。

参考技术D 错了,whlie 'z' is null b表示z字符不为空,一直为真。后面根本没有什么关系。追问

我的想法是:z为空,则进行循环;如果找到z,则退出循环。
不能这样写吗?

追答

嗯,你那是z字符了。你的id有什么用呢? 加1了没有用过,呵呵。

追问

谢谢你。请问查询到了就退出循环,怎么写判断语句呢?

以上是关于sql while循环语句问题的主要内容,如果未能解决你的问题,请参考以下文章

sql server中do while循环怎么写

sql 中流程控制语句的关键字都有哪些

在 SQL Server 中使用插入语句优化必要的 while 循环

sql server中的while循环语句

在sql server中循环语句 for要怎么使用

mssql 存储过程中循环如何写,在循环中用啥语句跳出循环呢,在线等