MySQL:一个SQL语句中几个条件的总和列表

时间:2010-07-14 11:16:44

标签: mysql

我的MySQL语句有问题:

select sum(x) as "sum", "01.06.2010" as "date" from (
   select distinct a.id as ID, a.dur as x from b_c 
      inner join c on b_c.c_id = c.id 
      inner join a on c.id = a.c_id 
      inner join a_au on a.id = a_aud.id 
      inner join d on a_au.rev = d.rev 
      where 
         b_c.b_id = 30 and 
         a_au.stat != 1 and 
         DATE(FROM_UNIXTIME(rtime)) = DATE('2010-06-01')
) AS SubSelectTable;

此语句返回一行,其中包含列“sum”和“date”。

现在我不仅有一个日期('2010-06-01'),我有很多日期我必须得到它的总和(),但不是一行。我想每天有一个结果行。

所以,例如,上面的陈述给我回复

sum            date
-------------------
 20      01.06.2010

现在我的日期是2010-06-01,2010-06-02,2010-06-03,... 我能做的是为每个日期写一个更改DATE的sql语句。所以,如果我有10个日期,我将为数据库提供10个sql语句。 但我确实希望它有一个SQL语句,结果不应该是所有给定日期的总和,我希望每个日期有一个结果行。所以结果应该是这样的:

sum            date
-------------------
 20      01.06.2010
133      02.06.2010
 19      03.06.2010
 88      04.06.2010
...             ...

我该怎么做?有谁知道吗?

提前多多感谢&最诚挚的问候。

1 个答案:

答案 0 :(得分:3)

使用mysql GROUP BY命令。完全未经测试的代码示例:

select sum(x) as "sum", date as "date" from (
   select distinct a.id as ID, a.dur as x, DATE(FROM_UNIXTIME(rtime)) as date from b_c 
      inner join c on b_c.c_id = c.id 
      inner join a on c.id = a.c_id 
      inner join a_au on a.id = a_aud.id 
      inner join d on a_au.rev = d.rev 
      where 
         b_c.b_id = 30 and 
         a_au.stat != 1
) AS SubSelectTable
group by date;

请参阅: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html