如何在MS ACCESS查询中使用LIMIT

how to use LIMIT in query of MS ACCESS

我想用php做一个寻呼系统 我正在使用我的数据库的访问权限,它不允许我在我的 selected 请求中进行限制。

SELECT * FROM table LIMIT 10,20

我想在我的请求中添加一列,这样我就可以获得具有连续整数的临时 ID,这将允许我在条件之间进行操作

|id_temp | id  | name |
|   1    | 56  | exmp |
|   2    | 180 | exmp |
|   3    | 193 | exmp |
|   4    | 194 | exmp |
|   5    | 363 | exmp |
|   6    | 500 | exmp |

我尝试使用 TOP 作为替代解决方案,但它只允许我 select 前 10 个而不是其他。 然后我取了我的元素的 ID 以便在两者之间使用,但问题是我的结果每次都不能有相同的数量。此外,我的服务器非常有限,而且请求很大,所以我不能使用 not in。

Access不支持OFFSET,所以你可以做的是这样的技巧:

select top 10 * 
from tablename
where id > (select max(id) from (select top 30 id from tablename order by id ))
order by id

它将return第31行到第40行按id排序。
注意:不要在没有 ORDER BY 的情况下在 sql 中使用 TOPLIMIT,因为不能保证结果是您期望的结果。
如果你想要那个 id_temp 列,你可以这样得到它:

SELECT 
  ((select count(*) from tablename where id < t.id)+1) AS id_temp, 
  t.*
FROM tablename AS t
ORDER BY t.id;