0
我有两个包含三列的表包含相同类型的信息(id,属性和金额)。我想将它们合并到一个联合中,并将该联合与另一个包含id列表的表进行过滤,然后对常用属性进行求和。Mysql进一步联合在联合结果上使用连接字段来筛选它们
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过滤另一个表表-B的属性,但我还没有得到一个过滤表上班呢。)
感觉好像你在以不恰当的方式做这件事,为什么不使用没有CONCAT的数字,因为CONCAT会大大减缓这种情况。将键入一个例子 - 很大程度上取决于table_b id将加入的位置,尽管tbh – 2012-02-16 20:22:50