获取下一个max(id)



我得到了以下表格:

<表类> booking_id user_id tbody><<tr>11112761393214115626161173232

如果你使用的是MySQL,你可以通过使用LIMIT&OFFSET

只需添加order by booking_id desc LIMIT 1 OFFSET 1,您将得到第二高的booking_id。例如:

select * from booking where user_id = 1 order by booking_id desc OFFSET 1 LIMIT 1

我在我的一个表上测试了这个&它工作得很好。如果你在booking_id上有一个索引,它应该会非常快。

如果您想为持有最高预订的用户提供第二高的预订,那么这应该有效

SELECT * FROM booking 
WHERE user_id in
(select user_id from booking order by booking_id desc limit 1) 
ORDER BY booking_id DESC LIMIT 1 OFFSET 1 

子查询查找预订最高的用户的user_id,然后主查询查找他们的第二高预订

一个简单的方法是使用LIMIT OFFSET:

SELECT *
FROM booking
WHERE user_id = 1
ORDER BY booking_id DESC
LIMIT 1 OFFSET 1

演示

通过使用这个问题的答案查找第二大值的最简单的SQL查询是什么?https://stackoverflow.com/a/7362165/14491685

你可以集成你的查询得到这样的:

select * from booking 
where booking_id =
(select max(booking_id) from booking
where user_id =1 
and booking_id not in (SELECT MAX(booking_id ) FROM booking  ))

最新更新