gpt4 book ai didi

sql - 检索客户的最后一个挂单

转载 作者:行者123 更新时间:2023-11-29 13:37:06 25 4
gpt4 key购买 nike

我有一些 OrderCustomers 创建,存储在 postgres 数据库中。一些订单可能有 'pending' 状态。我希望用户能够处理他的最后一个未决订单。

订单表

id   | order_num | order_date |customer_id | status
-----+-----------+------------+------------+---------
80 | 1234 | 02-01-2000 | 20 | pending
----------------------------------------------------
81 | 2345 | 02-01-2000 |20 | confirmed
-----------------------------------------------------
82 | 3456 | 02-01-2000 |20 | pending
--------------------------------------------------
83 | 3498 | 02-001-2000| 20 | confirmed
----------------------------------------------------

使用有什么问题吗

select * from orders where customer_id =20 and status='pending' order by id DESC limit 1

多条记录的order_date可能相同,订单号未必总是升序排列。在这方面按 ID 排序安全吗?

最佳答案

您应该按 order_dateid 作为次要排序关键字进行排序:

select *
from orders
where customer_id = 20
and status = 'pending'
order by order_date desc, id desc
limit 1

您想要最新的订单,因此您应该排序以表达该意图。您还必须处理重复的 order_date 值,以便您可以将 id 作为辅助排序键,希望在最近的 上获得最新的值订单日期。这假定 idserialbigserial 列。

只要在创建记录后不允许更改 order_date,您就可以安全地使用 order by id desc。但是,如果您order by order_date desc, id desc 那么您的意图将立即显而易见,维护您的代码的人(可能是您)可能会在您准确地说出您的意思时欣赏它。

关于sql - 检索客户的最后一个挂单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7369916/

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