gpt4 book ai didi

mysql - 在 mySQL 中使用多个结果更新内连接的值

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

我有一个类似这样的更新查询

UPDATE table_a AS a
INNER JOIN table_b AS b
ON a.id = b.id
SET a.category = b.category

table_a 是一个临时表,用于格式化导入文件的数据 table_b 是我为导入而编译到 table_a 中的几个表之一

现在我遇到了一个问题,table_a 的一个 id 在 table_b 中返回 2 个类别,这是有问题的,因为我只想要其中 1 个值

我已经弄清楚我应该在 table_b 中使用优先级字段,其中如果 table_b 对于 table_a 中的 1 个 id 有 2 个结果,我将采用最高优先级的值(即 cat_a 的优先级为 99,cat b 的优先级为82,cat_c 的优先级为 95,cat_b 将被选择)

问题是我不确定如何做这样的事情,或者即使有可能,任何人都有一些想法

最佳答案

在考虑这些问题时,从 select 语句开始会很有帮助:

select b.*
from table_b b join
(select b.id, max(priority) as maxp
from table_b
group by b.id
) bmax
on b.id = bmax.id and
b.priority = bmax.maxp

然后您可以将其替换为更新:

UPDATE table_a a join
(select b.*
from table_b b join
(select b.id, max(priority) as maxp
from table_b
group by b.id
) bmax
on b.id = bmax.id and
b.priority = bmax.maxp
) b
ON a.id = b.id
SET a.category = b.category

关于mysql - 在 mySQL 中使用多个结果更新内连接的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17736826/

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