为什么用select @num=number from test 取得是最后一条数据里面的值

RunEric 2018-02-01 04:17:27
我有一张表
ID name number
1 a 10
2 b 20
3 c 30
为什么用select @num=number from test 取得是最后面一条数据的值
print @num 为30
他的原理是什么,搞不懂。
...全文
1398 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
OwenZeng_DBA 2018-02-01
  • 打赏
  • 举报
回复
引用 楼主 RunEric 的回复:
我有一张表 ID name number 1 a 10 2 b 20 3 c 30 为什么用select @num=number from test 取得是最后面一条数据的值 print @num 为30 他的原理是什么,搞不懂。
这个是SQL SERVER默认的。如果 SELECT 语句返回多个值,则将返回的最后一个值赋给变量。因为不可能把多个值赋给一个变量,所以他肯定要选择一个。
吉普赛的歌 2018-02-01
  • 打赏
  • 举报
回复
他那样效率并不高, 而且顺序没法保证, 可读性还不好, 没必要学他的 最好是按这种:
select @num=(select top 1 number from test ORDER BY id DESC)
jaki-egg 2018-02-01
  • 打赏
  • 举报
回复
搜索是逐条搜索的呀,最后搜索到是30那条的数据,那么最后付给@num的值就是30了
听雨停了 2018-02-01
  • 打赏
  • 举报
回复
根据你数据的插入顺序取的最后一条的记录

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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