SUM数据基于另一个表的Group By语句

时间:2010-07-04 23:25:43

标签: mysql

我正在尝试创建一个查询,允许我根据另一个表中的值获取存储在一个表中的总和的总和。

具体来说,我有一个名为'winner_bids'的表,我希望与另一个表连接,称为'objects'。 'winning_bids'包含用户ID和对象ID('对象'表的主键)。 'objects'表包含Object ID和对象的值。我想对每个用户的'objects'表中的值求和,并按'wins_bids'表中的用户ID进行分组。

我尝试过类似的东西,但它不起作用:

SELECT SUM(o.value) AS total, w.uid
  FROM winning_bids w 
  LEFT JOIN objects o ON (o.id = w.oid)
 GROUP BY w.uid

此语句仅返回所有用户ID,但仅包含每行中第一个用户ID的总数。

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

它适用于我。

以下是我为测试您的查询所做的工作:

CREATE TABLE winning_bids (uid INT NOT NULL, oid INT NOT NULL);
INSERT INTO winning_bids (uid, oid) VALUES
(1, 1),
(1, 2),
(2, 3);

CREATE TABLE objects (id INT NOT NULL, value INT NOT NULL);
INSERT INTO objects (id, value) VALUES
(1, 1),
(2, 20),
(3, 300);

SELECT SUM(o.value) AS total, w.uid
FROM winning_bids w
LEFT JOIN objects o ON (o.id = w.oid)
GROUP BY w.uid;

结果:

total  uid
21     1
300    2

如果您仍然认为它不起作用,请在运行查询时发布导致错误结果的示例输入数据,并指定您认为正确结果应该是什么。