gpt4 book ai didi

mysql - 按 MySQL 中定义的条件分组

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

我有一个如下表。当 Type=Forecast 时,将填充所有值。当Type=Sales时,所有区域均为NULL。

回顾一下Forecast,每个ID只能映射到一个Region。但在某些情况下,可能有 2 个区域映射到一个 ID。如果发生这种情况,那么我只想关注第一个区域。

另请注意,Type=Forecast 中可能存在 ID,但 Type=Sales 中不存在 ID,反之亦然。

TABLE 1
ID Region Type
123xy ASPAC Forecast
123xy ASPAC Forecast
456za ASPAC Forecast
456za EMEA Forecast
789sw LATAM Forecast
789sw EMEA Forecast
999ww NORTH Forecast
123xy Sales
123xy Sales
456za Sales
789sw Sales
111xx Sales

我的预期输出是:

TABLE 2: Expected Output
ID Region Type
123xy ASPAC Forecast
123xy ASPAC Forecast
456za ASPAC Forecast
456za EMEA Forecast
789sw LATAM Forecast
789sw EMEA Forecast
999ww NORTH Forecast
123xy ASPAC Sales
123xy ASPAC Sales
456za ASPAC Sales
789sw LATAM Sales
789sw LATAM Sales
111xx Sales

理想情况下,预期输出将使用“销售中的区域”的新填充值来更改/更新表。但是我不确定如何以最有效的方式进行此操作?我正在考虑将 Type = Forecast 的所有数据插入到另一个表中,按 ID 和区域对它们进行分组,删除所有重复项,然后执行 LEFT JOIN TABLE 1 与 TEMP 表。

最佳答案

获取 ID 的最小值,再次将其与表连接,并对未定义区域的行使用最小值行。

select t1.ID, ifnull(t1.Region, t.Region), t1.Type
from table1 t1
join (
select t2.Region, min(ID) as ID
from table1 t2
group by t2.Region
) t on t.ID=t1.ID

参见SQLFiddle

关于mysql - 按 MySQL 中定义的条件分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54600457/

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