在数据表中怎样查前10-20条记录??????

wangcw 2002-12-05 08:26:28
在数据表中怎样查前10-20条记录
...全文
135 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
gks_cn 2002-12-11
  • 打赏
  • 举报
回复
不错阿,好阿,收藏了。
李煎熬 2002-12-06
  • 打赏
  • 举报
回复
小林:
刚才我看错了,你的办法可以。
不过你今天的方法和昨天是不一样的。
李煎熬 2002-12-06
  • 打赏
  • 举报
回复
看来 playyuer(小干部儿) 的方法最好。
昨天的方法也可以,不过可能效率会比这种低。

SELECT Top @PageSize *
FROM T
WHERE SortField NOT IN (SELECT TOP @PageSize * @Pagei SortField
FROM T
ORDER BY SortField
)
ORDER BY SortField
李煎熬 2002-12-06
  • 打赏
  • 举报
回复
小林:
你这种算法要加上t.i>20才可以,要是我的表里没有这样的以数字顺序排列的ID怎么办?
如果有这种ID,那么问题倒真的是好办了。
我只要这样就可以:

select * from table1
where id>20 and id<30
kaisa2002 2002-12-06
  • 打赏
  • 举报
回复
我也有这问题 解决不了 哎
大健 2002-12-06
  • 打赏
  • 举报
回复
学习
pumawang 2002-12-06
  • 打赏
  • 举报
回复
呵呵,差不多.
哎!上csdn 次数不多,找了半天才把这个问题给找出来. 真shy...
李煎熬 2002-12-05
  • 打赏
  • 举报
回复
小林:
那个不是排序的问题,而是逻辑的问题。
你可以试一下那种NOT IN的语句,不会得到我们现在讨论要得到的结果。
李煎熬 2002-12-05
  • 打赏
  • 举报
回复
这样可以。这是用spring_ok(AFanOfSoccerLottery) 的方法。

SELECT a.ID, a.Name
FROM (SELECT TOP 10010 *
FROM table1) a LEFT OUTER JOIN
(SELECT TOP 10000 *
FROM table1) b ON a.ID = b.ID
WHERE (b.ID IS NULL)
ORDER BY a.ID

我测试的结果是不能用a.*或b.*这样的语句。
否则就不会得到正确的结果。
李煎熬 2002-12-05
  • 打赏
  • 举报
回复
事实上我遇到的问题是:
从满足复杂条件的查询中取出第几百条开始的20条记录的问题。
而且我的表很大。
这个查询也可能返回大到100000以上的记录。

用下面这样的语句可以得到10到20条记录,但是不能加order by语句。
SELECT a.ID, a.Name
FROM (SELECT TOP 20 *
FROM table1) a LEFT OUTER JOIN
(SELECT TOP 10 *
FROM table1) b ON a.ID = b.ID
WHERE (b.ID IS NULL)
pumawang 2002-12-05
  • 打赏
  • 举报
回复
Jack :

select top 40 * from test order by i
select top 10 t.i
from test t
where t.i not in (select top 10 i from test order by t.i)
order by t.i

刚才没有加上排序,现在的呢?
李煎熬 2002-12-05
  • 打赏
  • 举报
回复
谢谢大力。
这个办法可以。
不过看来只能用于取得前面的少量数据时可用。
如果我是取100000到100010的数据,还是要做一个很大的#TEMP。
做这个临时表就要占用很大的资源。
虽然我只是取出10条数据而已。
李煎熬 2002-12-05
  • 打赏
  • 举报
回复
(小林)和(大明白)的方法都是看似可行,其实不可能得到正确值的语句。
spring_ok(AFanOfSoccerLottery) 的方法原理好象可以,不过要做修改。

我的数据库是SQL SERVER 2000
pengdali 2002-12-05
  • 打赏
  • 举报
回复
select top 20 IDENTITY(int, 1,1) AS ID_Num,* into #temp from 表
select * from #temp where ID_Num>10
pumawang 2002-12-05
  • 打赏
  • 举报
回复
得到 第 50 开始 20 条 ....
select top 20 t.i from test t where t.i not in (select top 50 i from test)

李煎熬 2002-12-05
  • 打赏
  • 举报
回复
用(大力)的方法,如果我的表是一个300000数据的表,我要取回其中的第10条到第20条记录,也要做一个#temp,太浪费资源了吧。
有什么更好的方法吗?
pengdali 2002-12-05
  • 打赏
  • 举报
回复
select IDENTITY(int, 1,1) AS ID_Num,* into #temp from 表
select * from #temp where ID_Num>10 and ID_Num<=20
李煎熬 2002-12-05
  • 打赏
  • 举报
回复
请问两位试过这样的语句没有?
不要胡说啊!
softonecn 2002-12-05
  • 打赏
  • 举报
回复
select top 20 * from [table] where key not in (select top 9 key from [table] )
也就是取出前20个并除掉前9个。
spring_ok 2002-12-05
  • 打赏
  • 举报
回复
Select a.* from (Select Top 20 * from table1) a left join (select top 10 * from table1) b on a.id = b.id where b.id is null
加载更多回复(3)

22,209

社区成员

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

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