是否可以模拟以下 MySQL 查询:
SELECT * FROM `tbl` ORDER BY `date` DESC LIMIT X, 10
(X为参数)
在 MS Access 中?
虽然访问/JET TOP
关键字不直接提供OFFSET
能力,我们可以巧妙地结合使用TOP
、子查询和“派生表”以获得相同的结果。
下面是获取从偏移量 20 开始的 10 行的示例Person表中ORDER BY
Name and Id...
SELECT Person.*
FROM Person
WHERE Person.Id In
(
SELECT TOP 10 A.Id
FROM [
SELECT TOP 30 Person.Name, Person.Id
FROM Person
ORDER BY Person.Name, Person.Id
]. AS A
ORDER BY A.Name DESC, A.Id DESC
)
ORDER BY Person.Name, Person.Id;
本质上,我们查询前 30 个,反转顺序,查询前 10 个,然后从表中选择匹配的行,再次按正序排序。这应该是相当有效的,假设Id is the PRIMARY KEY
,并且有一个索引Name。可能是某个特定的覆盖索引Name, Id(而不是仅仅一个Name)需要获得最佳性能,但我认为索引隐含地涵盖了PRIMARY KEY
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)