我必须使用表:(id,name)和另一个表(id,id_name,money)。
在第二个表中,我有类似这样的东西:
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)我只收到第二个表中的第一行。
WHere我做错了吗??
发布于 2014-04-17 16:10:21
您需要使用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会将所有内容分组到一行中。
发布于 2014-04-17 16:10:31
您需要使用group by当您使用集合函数时,使用集合函数而不对它们进行分组将导致单行,因为假设整个表是一个组,根据您想要的结果集,您还需要DESC after 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发布于 2014-04-17 16:10:43
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上这样做了
https://stackoverflow.com/questions/23127833
复制相似问题