将 WHILE 循环查询转换为 FOR 循环查询
To convert the WHILE loop query into FOR loop query
这是 table 在 SQL 服务器
中创建并插入的值
create table Country (
id int, countryname varchar(25)
)
insert into country (id, countryname)
values (1,'India'), (2,'Austria'), (3,'Sri Lanka'), (4,'Mongolia'), (5,'Russia')
并使用 WHILE 循环,我在 SQL 服务器中实现了以下查询。
declare @id int, @countryname varchar(30), @maxid int
select @id=min(id), @maxid=max(id)
from country
while(@id is not null and @id<=@maxid)
begin
select @countryname=`countryname`
from Country where id=@id
print convert`(varchar,@id)`+'. country name is '+ @countryname
set @id=@id+1
end
现在我想要使用 FOR 循环得到与上面相同的结果,我知道在 SQL 服务器中 FOR 循环没有被使用,但是使用 WHILE 循环我们可以在 SQL 中模拟 FOR 循环服务器。
谁能帮我解决这个问题?
使用查询,而不是循环 print
:
在 SQL 中,我们总是尝试一次处理集合,而不是使用 while
循环或游标。
select
concat(convert(varchar(12), @id), '. country name is ', countryname)
from Country
order by id
这是 table 在 SQL 服务器
中创建并插入的值create table Country (
id int, countryname varchar(25)
)
insert into country (id, countryname)
values (1,'India'), (2,'Austria'), (3,'Sri Lanka'), (4,'Mongolia'), (5,'Russia')
并使用 WHILE 循环,我在 SQL 服务器中实现了以下查询。
declare @id int, @countryname varchar(30), @maxid int
select @id=min(id), @maxid=max(id)
from country
while(@id is not null and @id<=@maxid)
begin
select @countryname=`countryname`
from Country where id=@id
print convert`(varchar,@id)`+'. country name is '+ @countryname
set @id=@id+1
end
现在我想要使用 FOR 循环得到与上面相同的结果,我知道在 SQL 服务器中 FOR 循环没有被使用,但是使用 WHILE 循环我们可以在 SQL 中模拟 FOR 循环服务器。
谁能帮我解决这个问题?
使用查询,而不是循环 print
:
在 SQL 中,我们总是尝试一次处理集合,而不是使用 while
循环或游标。
select
concat(convert(varchar(12), @id), '. country name is ', countryname)
from Country
order by id