gpt4 book ai didi

MySql SELECT,检查记录在 Status 中是否有不同的值,然后使用一个

转载 作者:行者123 更新时间:2023-11-29 11:47:53 26 4
gpt4 key购买 nike

我有这张订单和状态表:

id   |   date          |   status
123 2015-12-01 order
123 2015-12-20 refund
234 2015-12-21 order
456 2015-12-22 order
456 2015-12-22 refund

现在我想在“状态”列上获取结果,每当 ID 也具有“退款”状态时,就使用该值而不是值“订单”。

如下:

id   |   date        |   status    | refund_date
123 2015-12-01 refund 2015-12-20
234 2015-12-21 order
456 2015-12-22 refund 2015-12-22

我有一个检索退款日期的查询,但我不确定如何获取退款订单的状态。此外,该表有大约 500k 条记录,因此性能是关键。

select 
id,
date,
status,
case when count(id)>1 then max(date) else min(date) end as refund_date
from orders
group by id

非常感谢。

最佳答案

一种方法是使用 union all 来实现此目的:

select o.*
from orders o
where o.status = 'refund'
union all
select o.*
from orders o
where o.status = 'order' and
not exists (select 1
from orders o2
where o2.id = o.id and o2.status = 'refund'
);

使用 orders(status)orders(id, status) 上的索引,此查询应该相当快。

关于MySql SELECT,检查记录在 Status 中是否有不同的值,然后使用一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34602986/

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