首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql结果order by sum()

问Mysql结果order by sum()
EN

Stack Overflow用户
提问于 2014-04-17 16:07:53
回答 5查看 81关注 0票数 0

我必须使用表:(id,name)和另一个表(id,id_name,money)。

在第二个表中,我有类似这样的东西:

代码语言:javascript
复制
1, 1, 200
2, 1, 400
3, 2, 400

在第一个表中:

代码语言:javascript
复制
1,alex
2,jason

执行完查询后,我希望收到以下结果:

代码语言:javascript
复制
alex,600

jason,400

这是我的问题:

代码语言:javascript
复制
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)

我只收到第二个表中的第一行。

WHere我做错了吗??

EN

回答 5

Stack Overflow用户

发布于 2014-04-17 16:10:21

您需要使用GROUP BY

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-04-17 16:10:31

您需要使用group by当您使用集合函数时,使用集合函数而不对它们进行分组将导致单行,因为假设整个表是一个组,根据您想要的结果集,您还需要DESC after ORDER by子句

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2014-04-17 16:10:43

代码语言:javascript
复制
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 cluase,你已经在JOIN上这样做了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23127833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档