mysql返回一条与上一条记录不同的记录
这是我的问题mysql返回一条与上一条记录不同的记录,mysql,sql,rdbms,Mysql,Sql,Rdbms,这是我的问题 SELECT `orders_status_id` FROM orders_status_history WHERE `orders_id`='15' ORDER BY `date_added` DESC LIMIT 1, 1 我需要的是从一堆记录中获取最后一条记录。上面的查询在这一点上起作用,但现在我想放置一个过滤器,如果最后一条记录为空或与最后一条记录相同,则将前一条记录移动 正如您可以看到的那样,orders\u status\u id的第二条最后记录是17(与最后一条
SELECT `orders_status_id` FROM orders_status_history
WHERE `orders_id`='15' ORDER BY `date_added` DESC LIMIT 1, 1
我需要的是从一堆记录中获取最后一条记录。上面的查询在这一点上起作用,但现在我想放置一个过滤器,如果最后一条记录为空或与最后一条记录相同,则将前一条记录移动
正如您可以看到的那样,orders\u status\u id
的第二条最后记录是17(与最后一条记录相同),因此它应该返回“8”(向上移动一步)。当最后一条记录为空时,应用相同的情况,然后向上移动一步。在本例中,如果不是“8”,而是“17”或为空,则它应该再向前移动一步,直到它与上一步或空不相同
谢谢
编辑:
这就是我得到的错误
最简单的方法可能是使用变量:
SELECT osh.*
FROM (SELECT osh.orders_status_id,
(@rn := if(@osi = osh.orders_status_id, @rn,
if(@osi := osh.orders_status_id, @rn + 1, @rn + 1)
)
) rn
FROM orders_status_history osh CROSS JOIN
(SELECT @rn := 0, @osi := -1) params
WHERE orders_id = 15
ORDER BY date_added DESC
) osh
WHERE rn = 2
LIMIT 1;
这将枚举订单状态id的不同值,选择出现的第二个值。谢谢您的回答。。请再次查看我的问题,并附上我在应用您的查询后收到的错误消息。