在select语句中赋值的问题

高原山顶的大风车 2010-11-25 04:44:04
有一个如下表 t:

f_id f_cityID f_name f_flag
---------------------------
1 1000 天津 无效
2 1000 天津 有效
3 1001 北京 有效
4 1003 上海 有效


DECLARE @fid int;
SELECT @fid=f_ID FROM t WHERE (f_cityID =1000) //根据这个条件返回的记录应该有两行。

select @fid //这里显示的值是2

问题:是否可以理解为在查询时进行了多次赋值,所以@fid的值就是返回记录集中最后一行的记录值?
...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_sw32 2010-11-27
  • 打赏
  • 举报
回复
谢谢!学了一招~!
  • 打赏
  • 举报
回复
.。。。。。。
chen8410 2010-11-25
  • 打赏
  • 举报
回复
使用SELECT语句赋值,对于每个满足条件的结果行,都会进行赋值;当访问每一行时,就会用当前行的值覆盖掉变量中的原有值。当赋值SELECT语句完成时,变量中保存的值是SQL Server随机访问到的最后一行中的值。
-晴天 2010-11-25
  • 打赏
  • 举报
回复
正确!
create table t(f_id int,f_cityID nvarchar(10),f_name nvarchar(10),f_flag nvarchar(10))
insert into t select 1,'1000','天津','无效'
insert into t select 2,'1000','天津','有效'
insert into t select 3,'1002','北京','有效'
insert into t select 4,'1003','上海','有效'
go
DECLARE @fid int;
SELECT @fid=f_ID FROM t WHERE (f_cityID =1000) order by f_id desc
select @fid
go
drop table t

这样就得到 1 .
唐诗三百首 2010-11-25
  • 打赏
  • 举报
回复

DECLARE @fid int
Declare ff Cursor Local Keyset For
SELECT f_ID FROM t WHERE f_cityID =1000

Open ff
Fetch first From ff into @fid
While (@@FETCH_STATUS <> -1)
Begin
print @fid
FETCH NEXT FROM ff into @fid
End
close ff
deallocate ff
hao1hao2hao3 2010-11-25
  • 打赏
  • 举报
回复
如果想依次显示查询到的结果,可以考虑用游标。
华夏小卒 2010-11-25
  • 打赏
  • 举报
回复
返回记录集中最后一行的记录值

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧