真正的MySQL声明

时间:2013-04-15 10:37:31

标签: mysql sql

我有一个表(基础),表结构是:

id, name, money, manager, date

我是从表中检索不同的值

SELECT DISTINCT name from base; 

此代码有效但我需要这样的东西

SELECT DISTINCT name SUM(money) from base;

此代码仅从表中检索一个值(名称)和所有货币值的总和:

像这样

id      name      money    manager      date
===     =====     =====    =======   ===========
 1      John       3000     Scot      10.04.2013

我需要名字DISTINCT和钱SUM

   id      name      money    manager      date
   ===     =====     =====    =======   ===========
    1      John       150     Scot      10.04.2013
    2      Mia        200     Scot      11.04.2013
    3      Monica     650     Scot      09.04.2013
   ...     ......     ...     ....      ..........

如果我像这样添加SQL查询:

SELECT DISTINCT name, SUM(money) FROM base WHERE name='Mia'

SELECT name, SUM(money) FROM base WHERE name='Mia'

代码有效。如何在表格中的所有记录上这样做?

我正在使用:

Mysql 5.5.24, Delphi Xe3, Delphi sql组件Unidac

抱歉我的英文不好

3 个答案:

答案 0 :(得分:5)

GROUP BY允许您使用SUMAVGMINMAX等群组功能:

SELECT name, SUM(money) FROM base GROUP BY name;

答案 1 :(得分:1)

我不确定你想得到什么,我猜这是所有名字Mia的记录的总和。

SELECT (SELECT SUM(money) FROM base WHERE name='Mia') as money, DISTINCT name FROM base WHERE name='Mia'

for mia

并用于普遍使用

SELECT (SELECT SUM(money) FROM base b1 WHERE b1.id=b2.id) as money, DISTINCT name FROM base b2 

答案 2 :(得分:0)

正如@KlasLindbäck所说,您可以使用group by来计算每个名称的总和。 如果您只需要给定名称的总和(让我们说Mia),您也可以使用此查询:

 SELECT 'Mia' as name, SUM(money) from base where name = 'Mia';