Home > Database > Mysql Tutorial > Access中的Select Top 语句不起作用解决

Access中的Select Top 语句不起作用解决

WBOY
Release: 2016-06-07 15:44:00
Original
1572 people have browsed it

我一直以为ACCESS的SQL 语句 与SQL Server差不多,当时也使用 Select top n在ACCESS测试过,都是成功的,但昨天突然发现ACCESS中有个问题: 如果在查询TOP 语句 的后面使用Order by,而且Order by字段中有重复值的话,那么这个TOP很可能会失效, 会返回所有

我一直以为ACCESS的SQL语句与SQL Server差不多,当时也使用 Select top n在ACCESS测试过,都是成功的,但昨天突然发现ACCESS中有个问题:
  如果在查询TOP语句的后面使用Order by,而且Order by字段中有重复值的话,那么这个TOP很可能会失效,
会返回所有记录
比如:

Access中的Select Top 语句不起作用解决 Select top 5 from News order by CreateDate

如果CreateDate中有重复值,那么很有可能会显示出所有的记录来,此TOP功能会失效的
但如果CreateDate中无重复值,那么TOP功能还是有效的

因此,在ACCESS中使用TOP功能要注意一下order by的字段是否会有重复值,如果象CreateDate是"年-月-日 时:分:秒"的,那基本上问题不大的。
但为了保险起见,我们也可以采用“加入主键”的方式:

Access中的Select Top 语句不起作用解决 Select top 5 from News order by CreateDate desc,id desc


用主键作“不可能重复”的保障就可以防止此问题出现了!!

希望这对某些朋友有用!!

在网上找到一个相关的解释:
JET SQL不是 T-SQL语句
jet sql 会返回重复值,也就是说,一个表中如果 ORDER BY 的字段都是 0 ,一共有100条记录,即使你用SELECT TOP 1 来返回记录,也同样返回100条记录,因为 JET DB 无从在这100条记录里面判断先后次序,只能返回100条。要解决此问题可以在后面加入一个主键字段

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template