解释一下这个 过程是如何查询的

xiaofan_sap 2013-04-03 09:50:52

Select * from #T a where not exists(select 1 from #T where Name=a.Name and ID<a.ID)

这个过程是如何执行的呢 ?
请详细说明 谢谢~!
...全文
297 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangbei59 2013-04-04
  • 打赏
  • 举报
回复
注意 not exists 返回的布尔值。 外层元素,依次嵌套查询。
shuxingbai 2013-04-03
  • 打赏
  • 举报
回复
首先选外层查询中#T表的第一个元组,根据它与内层查询相关的属性值Name值处理内层查询。 若内层查询结果为空,则外层查询的where子句返回值为真,于是取外层查询的该元组放入结果表。 然后再取#T表中的下一个元组,重复这个过程,直至外层#T表全部检查完为止。
szm341 2013-04-03
  • 打赏
  • 举报
回复
假设数据有为 name,id a,1 a,2 b,1 外部查询先将a,1这条数据进入子查询判断筛选,子查询中查询name=a,id<1的数据是不存在的,那么根据not exists,这条数据是要查询的数据, 接下来a,2这条数据,子查询中查询name=a,id<2的数据是存在的,根据not exists,这条数据不是要查询的数据,所以过滤掉 最终你的这个语句执行的结果就是,查询name中取最小id的整条数据

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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