我正在做一个有公告的信息系统,所以我想从公告表中获取数据,首先应该是具有最大 ID 的数据,因为它是最新的公告,这是我的代码:
SELECT image FROM announce where id=(SELECT max(id) FROM announce);
现在我想获取最大 id 之前的数据,我在这里使用这段代码:
SELECT image FROM announce where id=(SELECT max(id)-1 FROM announce);
但是它只在没有被删除的行时有效,如果有一些被删除的行它就不起作用,比如 max id 是 10 并且 id 的 9,8,7 被删除。也就是说现在的id是:1,2,3,4,5,6,10,我怎么才能得到id 6,5,4,3,2,1中的数据呢?
最佳答案
如果您按降序 (DESC
) ORDER
查询,并且 OFFSET
为 1 (OFFSET 1
),你会得到倒数第二行。两个的偏移量将给出之前的行,依此类推。这也使用了 LIMIT 1
,所以我们只得到一行。 LIMIT 1, 1
与 LIMIT 1 OFFSET 1
相同。
SELECT image
FROM announce
ORDER BY id DESC
LIMIT 1, 1
关于php - 如何获取max id之前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45958194/