我得到了以下表格:
如果你使用的是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 ))