gpt4 book ai didi

Mysql 使用联合结果上的串联字段进一步连接以过滤它们

转载 作者:行者123 更新时间:2023-11-29 14:34:44 24 4
gpt4 key购买 nike

我有两个表,其中包含三列,其中包含相同类型的信息(id、属性和金额)。我想将它们组合在一个联合中,并将该联合与另一个包含 id 列表的表连接起来以过滤它们,然后对公共(public)属性求和。

table_a                     table_b                   table_ids
id attr amount id attr amount uid a_id
1 'atr1' 10 1 'atr2' 4 'id1' 1
1 'atr2' 5 2 'atr3' 2 'id2' 2
2 'atr3' 7 2 'atr1' 11
3 'atr1' 8

我试过了

SELECT table_ids.uid, t.attr, SUM(t.amount)
FROM table_ids
JOIN (SELECT CONCAT('a', id) AS comb_id, attr, amount FROM table_a
UNION ALL
SELECT CONCAT('b', id) AS comb_id, attr, amount FROM table_b
) t
ON CONCAT('a', table_ids.a_id) = t.comb_id
GROUP BY t.attr

但我只获取最后匹配的 a_id 的属性以及匹配行数乘以最后匹配行数量的总和。

(将会有另一个表具有更多 id 的过滤 table_b 属性,但我什至还没有一个过滤表可以工作。)

最佳答案

很难 100% 确定您的目标是什么,但这样的事情可能符合要求

SELECT
joinedData.uid,
joinedData.attr,
SUM(joinedData.amount) AS amount
FROM (
(
SELECT
table_ids.uid,
table_a.attr,
SUM(table_a.amount) AS amount
FROM table_a
INNER JOIN table_ids
ON table_ids.a_id = table_a.id
GROUP BY table_ids.uid, table_a.attr
)
UNION
(
SELECT
table_ids.uid,
table_b.attr,
SUM(table_b.amount) AS amount
FROM table_b
INNER JOIN table_ids
ON table_ids.b_id = table_b.id
GROUP BY table_ids.uid, table_b.attr
)
) AS joinedData
GROUP BY joinedData.uid, joinedData.attr

当然假设table_b会将id连接到table_ids.b_id上,根据需要更改它。

关于Mysql 使用联合结果上的串联字段进一步连接以过滤它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9318373/

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