sql top 的问题

liweiguowangshubiao 2010-07-23 11:32:36
select top 10 * from Table where id not in(select top 10 id from Table)

它的执行原理是先查出所有满足条件的数据 再取前10条
还是只查出满足条件的前10条??、
...全文
119 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jiang_janson 2010-07-28
  • 打赏
  • 举报
回复
取table中的11到20行数据
幸运的意外 2010-07-23
  • 打赏
  • 举报
回复
根据SQL各个子句解析的过程,在符合条件的记录全部被检索出来并且经过了排序(也可以不排序)后再使用选取头N条。
永生天地 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 liweiguowangshubiao 的回复:]
select top 10 * from Table where id not in(select top 10 id from Table)

它的执行原理是先查出所有满足条件的数据 再取前10条
还是只查出满足条件的前10条??、
[/Quote]
你应该这样试

id not in(select top 10 id from Table)
里面还有很多,再top 10 个,当然可以有
无涯大者 2010-07-23
  • 打赏
  • 举报
回复
查出所有满足条件的数据 再取前10条

select top 10 * from Table where id not in(select top 10 id from Table)
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 orchidcat 的回复:]

查出所有满足条件的数据 再取前10条
[/Quote]

按照SQL实行的逻辑顺序来讲是这样的.
水族杰纶 2010-07-23
  • 打赏
  • 举报
回复
什么意思?
select top 10 * 
from [Table]
order by id asc --desc
Mr_Nice 2010-07-23
  • 打赏
  • 举报
回复
查出所有满足条件的数据 再取前10条
hokor 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hokor 的回复:]
引用楼主 liweiguowangshubiao 的回复:
select top 10 * from Table where id not in(select top 10 id from Table)

它的执行原理是先查出所有满足条件的数据 再取前10条
还是只查出满足条件的前10条??、

只选择满足条件的前10行不会查询全部。
如果指定order by 则返回排序前的 前10……
[/Quote]
我说的不对。。。。忽略吧。。。。
hokor 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 liweiguowangshubiao 的回复:]
select top 10 * from Table where id not in(select top 10 id from Table)

它的执行原理是先查出所有满足条件的数据 再取前10条
还是只查出满足条件的前10条??、
[/Quote]
只选择满足条件的前10行不会查询全部。
如果指定order by 则返回排序前的 前10行,也就是说 order by 只对选择出的前10行排序,而不是全部排序在取前10行。如果你有大数据量的表你可以试一下,top 比 不加top 要快的多的多。
帮助文档的原话是这么说的:
如果查询包含 ORDER BY 子句,则将返回按 ORDER BY 子句排序的前 expression 行或 expression% 的行。如果查询没有 ORDER BY 子句,则行的顺序是随意的。
obuntu 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 orchidcat 的回复:]

查出所有满足条件的数据 再取前10条
[/Quote]

up

27,579

社区成员

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

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