设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: xingzhihao
打印 上一主题 下一主题

[Access本身] 如何取后50条记录?

[复制链接]

点击这里给我发消息

1#
发表于 2012-12-18 09:33:02 | 显示全部楼层
有点意思的说法,好像是分页取数据,顶一个。

点击这里给我发消息

2#
发表于 2012-12-18 09:35:40 | 显示全部楼层
顺便问一下,原始数据有主键吗?
主键是单一主键,还是复合主键?

点击这里给我发消息

3#
发表于 2012-12-18 09:52:51 | 显示全部楼层
假设有一主键为ID
那第一次取了 50 个ID
SELECT TOP 50 ID FROM yourData

第二次取50个ID
SELECT TOP 50 ID FROM yourData WHERE ID NOT IN (SELECT TOP 50 ID FROM yourData)

第三次取50个ID
SELECT TOP 50 ID FROM yourData WHERE ID NOT IN (SELECT TOP 100 ID FROM yourData)

第N次取50个ID
SELECT TOP 50 ID FROM yourData WHERE ID NOT IN (SELECT TOP 50 * (N-1) ID FROM yourData)

点击这里给我发消息

4#
发表于 2012-12-18 09:56:36 | 显示全部楼层
第N次取50个ID 对应的记录
  1. SELECT o.* FROM
  2.    (SELECT TOP 50 ID FROM yourData WHERE ID NOT IN (SELECT TOP 50 * (N-1) ID FROM yourData)) AS i INNER JOIN yourData AS o ON i.ID=o.ID
复制代码

点击这里给我发消息

5#
发表于 2012-12-18 10:19:06 | 显示全部楼层
鑨蘢瀧爖壟 发表于 2012-12-18 10:11
select * from [表名] where not [主键] in (select top 9950 * from [表名] order by [主键])  这样可以吗 ...

好!
还是人多力量大!
精简得好,哈哈

不过有点错
应该是
  1. select * from [表名] where [主键] not in (select top 9950 [主键] from [表名])
复制代码

点击这里给我发消息

6#
发表于 2012-12-18 23:07:56 | 显示全部楼层
不会你们所想的ID都是自动编号吧?而还是中间没有删除ID的?

点评

支持  发表于 2012-12-20 12:30

点击这里给我发消息

7#
发表于 2012-12-26 19:17:20 | 显示全部楼层
t小宝 发表于 2012-12-18 20:25
比较热闹呀,我也来一个,如果不充许倒序,是否这个速度快一点:
  1. SELECT 表1.*
  2. FROM 表1 LEFT JOIN (SELECT TOP 950 表1.自动编号 FROM 表1) AS 子查询 ON 表1.自动编号 = 子查询.自动编号
  3. WHERE (((子查询.自动编号) Is Null));
复制代码
我来整理一下

第N次取50个ID
SELECT TOP 50 y.*
FROM yourData AS y LEFT JOIN (SELECT TOP 50 * (N-1) ID FROM yourData) AS b ON y.ID = b.ID
WHERE b.ID Is Null;

红字,由 VBA 生成。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 07:30 , Processed in 0.097483 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表