如何在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 中使用 TOP
或 LIMIT
,因为不能保证结果是您期望的结果。
如果你想要那个 id_temp
列,你可以这样得到它:
SELECT
((select count(*) from tablename where id < t.id)+1) AS id_temp,
t.*
FROM tablename AS t
ORDER BY t.id;
我想用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 中使用 TOP
或 LIMIT
,因为不能保证结果是您期望的结果。
如果你想要那个 id_temp
列,你可以这样得到它:
SELECT
((select count(*) from tablename where id < t.id)+1) AS id_temp,
t.*
FROM tablename AS t
ORDER BY t.id;