如何在max id之前获取数据

时间:2017-08-30 10:37:56

标签: php mysql sql

我正在做一个有通知的信息系统,所以我想从宣布表中获取数据,首先应该是具有最大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中的数据?< / p>

2 个答案:

答案 0 :(得分:2)

如果您ORDER按降序排序(DESC),并且OFFSET为一个(OFFSET 1),则会得到倒数第二行。并且偏移两个将在此之前给出行,依此类推。这也使用LIMIT 1,所以我们只得到一行。 LIMIT 1, 1LIMIT 1 OFFSET 1相同。

SELECT image
FROM announce
ORDER BY id DESC
LIMIT 1, 1

答案 1 :(得分:1)

您只需使用x-delayed-messageorder by的一个查询,而不是您使用的两个查询:

limit

如果您想单独查询,可以将select image from announce order by id desc limit 2 更改为limit 2,以便第二个查询按您的意愿工作。