关于子查询里的条件和外面的条件问题

充满荆棘的路 2013-12-11 05:07:21
在子查询里面写where条件和在外面写where条件的区别和影响,以及为什么会这样。。。。。。在线等解答
...全文
1558 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaITOldMan 2013-12-11
  • 打赏
  • 举报
回复
是对不同的语句进行限定的
LongRui888 2013-12-11
  • 打赏
  • 举报
回复
举个例子:
select *
from
(
	select *
	from tb
	where id >= 100
)t
和这个:
select *
from
(
	select *
	from tb
)t
where id >= 100
是等价的,也就是查询结果是一样的,而你的是查询结果不一样,说明两种写法是不同的
LongRui888 2013-12-11
  • 打赏
  • 举报
回复
引用 2 楼 u010248119 的回复:
[quote=引用 1 楼 DBA_Huangzj 的回复:] 在里面写的,是为了筛选子查询里面的数据,在外面写的,是为了筛选外面数据集的数据
打个比方,我在外面写where查询能查出50条数据,用子查询却有60条,为什么[/quote] 有区别,对你的情况,写在外面,和写在里面,语义是不同的,会导致查询结果的不同。
發糞塗牆 2013-12-11
  • 打赏
  • 举报
回复
这种情况通常发生在超过1个筛选条件下,如果卸载外面,那么是同时筛选,但是如果一个条件写在里面,可能子查询只筛选了一个,然后外面筛选另外一个
發糞塗牆 2013-12-11
  • 打赏
  • 举报
回复
因为没有对外面的数据进行筛选,所以可能出现比外面写where条件更多的数据
充满荆棘的路 2013-12-11
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
在里面写的,是为了筛选子查询里面的数据,在外面写的,是为了筛选外面数据集的数据
打个比方,我在外面写where查询能查出50条数据,用子查询却有60条,为什么
發糞塗牆 2013-12-11
  • 打赏
  • 举报
回复
在里面写的,是为了筛选子查询里面的数据,在外面写的,是为了筛选外面数据集的数据

34,873

社区成员

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

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