exists在SQL中的执行过程具体是什么?(分不多,希望有人给点建议,我好郁闷)

Owenini 2009-01-10 12:01:37
select * from stuInfo (学生信息表) where exists
(select * from stuMarks(学生成绩表)
where stuInfo.stuId = stuMarks.stuId)

貌似这能查出参加考试的学生信息,请高手诉说具体执行步骤好吗?
...全文
96 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2009-01-10
  • 打赏
  • 举报
回复
select * from ta a where exists(select 1 from tb where a.id=b.id)
每扫ta一行,都扫tb,遇到匹配即返回ture,对tb的扫描在ta当前行不再继续下去,如果一直没找到,就会扫完tb (索引,或表扫),对ta的第一条记录处理完后, ta行下移,继续执行子查询,就这样继续下去,一直到ta所有记录都进行完。即,对应ta的每行,都会执行子查询

这是语义逻辑上的。
至于具体怎么执行,要看查询计划。
dawugui 2009-01-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 wjy503977212 的帖子:]
select * from stuInfo (学生信息表) where exists
(select * from stuMarks(学生成绩表)
where stuInfo.stuId = stuMarks.stuId)

貌似这能查出参加考试的学生信息,请高手诉说具体执行步骤好吗?
[/Quote]


类似:

select m.*
from stuInfo m , stuMarks n
where m.stuId = n.stuId

意即存在两表stuId相同的数据.

不过你的查询不如我写那个快.

22,209

社区成员

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

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