ACCESS数据库SELECT TOP奇葩的超出数量问题

翅膀的初衷

发表于2016-11-25 14:10:49

今天,有一个客户来反映有个网站首页资讯数量不对,以前原定只显示5条记录的数据,已经在页面上显示超过了几十条。

因为这个项目已经实施后近十年了,源代码早已佚失,于是直接在客户服务器上取了实施程序,反编译粗略过了下目后,直接将问题定位在数据库上。

数据库使用的是MDB(ACCESS,在那时用这个数据库的还是有部分人的),首先怀疑主键索引有问题,至使主键重复。

取下数据库,检查主键正常。

还原查询语句,SQL代码类似于如下:

select top 5 * table1 inner join table2 on table1 .id=table2.id order by createdate desc

执行代码,果然数据条数大大超过5条,排查掉内联方面的原因后,发现问题出在排序上,因为时间有重复,导师致TOP出来的数量异常,把order by createdate desc改成order by createdate desc,ID DESC后解决。

该问题仅见于ACCESS,在MSSQL中正常(作者表示:ACCESS还有这样的问题也是日了狗了,jiniannet.com原创文章,转载注明出处)