gpt4 book ai didi

mysql返回一条记录与最后一条记录不同

转载 作者:行者123 更新时间:2023-11-29 18:50:16 24 4
gpt4 key购买 nike

这是我的查询

SELECT `orders_status_id` FROM orders_status_history 
WHERE `orders_id`='15' ORDER BY `date_added` DESC LIMIT 1, 1

我需要的是从一堆记录中获取倒数第二条记录。上面的查询此时正在工作,但现在我想放置过滤器,如果倒数第二条记录为空或与最后一条记录相同,则移动一条记录以前的。

enter image description here

正如您所看到的,orders_status_id 的倒数第二条记录是 17(与最后一条记录相同),因此它应该返回“8”(向上移动一步)。当倒数第二条记录为空然后向上移动一步时,应用相同的情况。在此示例中,如果不是“8”而是“17”或空,那么它应该再向上移动一步,直到它与上一个或空不同。

谢谢

编辑:这是我收到的错误 enter image description here

最佳答案

最简单的方法可能是使用变量:

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;

这会枚举 order_status_id 的不同值,选择出现的第二个值。

关于mysql返回一条记录与最后一条记录不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44388047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com