这是我的 table :
user presenter price
------ ------------ --------
84 84 5000
88 84 3000
89 84 4000
89 84 7000
我将按用户
对这个表进行分组并汇总每个用户的总价格
,还包括他们的presenter
id 的行等于用户
最终结果应该是:
user total_price
------ ------------------
84 5000 + 3000 + 4000 + 7000
88 3000
89 4000 + 7000
最佳答案
您可以为此使用UNION ALL
:
SELECT user, SUM(price) AS total_price
FROM (
SELECT user, price
FROM mytable
UNION ALL
SELECT presenter AS user, price
FROM mytable AS t1
WHERE presenter <> user AND
EXISTS (SELECT 1
FROM mytable AS t2
WHERE t1.presenter = t2.user)) AS t
GROUP BY user
第二个查询将所有具有 presenter
且也是 user
的记录附加到 user
数据。外部查询仅使用 GROUP BY
,以便为每个 user
计算 price
的 SUM
。
关于MYSQL在group by中有共同的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38147815/