sum()的mysql结果顺序

时间:2014-04-17 08:07:53

标签: mysql sql sum

我必须使用表格:(idname)和另一个表格(idid_namemoney)。

在第二张表中我有类似的东西:

1, 1, 200
2, 1, 400
3, 2, 400

在第一个表格中:

1,alex
2,jason

执行查询后,我想收到这个结果:

alex,600

jason,400

这是我的疑问:

SELECT tabel1.nume ,SUM(tabel2.money) FROM tabel2 JOIN tabel2 
    ON tabel1.id = tabel2.id_name
WHERE tabel1.id = tabel2.id_name ORDER BY SUM(money)

我只收到第二张表的第一行。

我做错了吗?

5 个答案:

答案 0 :(得分:1)

您需要使用GROUP BY

SELECT tabel1.name ,SUM(tabel2.money) 
 FROM tabel2 JOIN tabel2 ON tabel1.id = tabel2.id_name
 WHERE tabel1.id = tabel2.id_name 
GROUP BY tabel1.name
ORDER BY SUM(money)

如果使用不带GROUP BY的聚合函数,MySQL会将所有内容分组为单行。

答案 1 :(得分:1)

使用聚合函数时需要使用group by,使用聚合函数而不对它们进行分组将通过将整个表假设为一个组来生成单行,根据您所需的结果集,您还需要DESC在ORDER BY子句之后

SELECT tabel1.id,
tabel1.nume ,
SUM(tabel2.money) `sum_money`
FROM tabel2 
JOIN tabel2 ON tabel1.id = tabel2.id_name 
GROUP BY tabel1.id
ORDER BY sum_money DESC

答案 2 :(得分:0)

SELECT 
tabel1.nume,
SUM(tabel2.money) 
FROM tabel2 
JOIN tabel2 ON tabel1.id = tabel2.id_name
GROUP BY tabel1.nume
ORDER BY SUM(money)

你不需要在这里使用where子句,你在JOIN上已经这样做了

答案 3 :(得分:0)

你需要Group By

SELECT tabel1.id, tabel1.nume, SUM(tabel2.money) `sum_money`
FROM tabel2 JOIN tabel2 ON tabel1.id = tabel2.id_name
WHERE tabel1.id = tabel2.id_name 
GROUP BY tabel1.id
ORDER BY sum_money

答案 4 :(得分:0)

首先,查看查询的第一行:

  SELECT tabel1.nume ,SUM(tabel2.money) FROM tabel2 JOIN tabel2 

除非您没有标题为“' nume'在你的第一个表中,这个tabel1.nume似乎是一个错字,因此造成麻烦。此外,您从tabel2中选择,与tabel2一起加入。这是错误的,您需要使用tabel1而不是tabel2加入。

其次,考虑查询中的第三行:

  WHERE tabel1.id = tabel2.id_name

您实际上并不需要在此处放置 WHERE 子句,因为您正在执行tabel1和tabel2之间的连接,因此,您正在使用此行:

  ON tabel1.id = tabel2.id_name

实际上它取代了 WHERE 子句。

第三,您需要根据tabel1.id使用 GROUP BY 子句。如果您使用 GROUP BY ,则不再需要使用 ORDER BY

总而言之,现在您的更正后的查询应如下所示:

  SELECT tabel1.name ,SUM(tabel2.money) FROM tabel2 JOIN tabel1 
  ON tabel2.id_name = tabel1.id
  GROUP BY tabel1.id 

希望这能回答你的问题。