我正在做一个有通知的信息系统,所以我想从宣布表中获取数据,首先应该是具有最大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>
答案 0 :(得分:2)
如果您ORDER
按降序排序(DESC
),并且OFFSET
为一个(OFFSET 1
),则会得到倒数第二行。并且偏移两个将在此之前给出行,依此类推。这也使用LIMIT 1
,所以我们只得到一行。 LIMIT 1, 1
与LIMIT 1 OFFSET 1
相同。
SELECT image
FROM announce
ORDER BY id DESC
LIMIT 1, 1
答案 1 :(得分:1)
您只需使用x-delayed-message
和order by
的一个查询,而不是您使用的两个查询:
limit
如果您想单独查询,可以将select image
from announce
order by id desc
limit 2
更改为limit 2
,以便第二个查询按您的意愿工作。