2011-10-27 45 views
0

查询我使用的是:

SELECT COUNT(*), 
    SUM(amount) AS amount, 
    FROM_UNIXTIME(added, '%W (%e/%m)') AS daily 
FROM affiliates_earnings 
WHERE added >= '1319074836' 
    AND added <= '1319679636' 
GROUP BY daily 

输出:

+----------+--------+-------------------+ 
| COUNT(*) | amount | daily    | 
+----------+--------+-------------------+ 
|  1 | 195 | Tuesday (25/10) | 
|  4 | 470 | Wednesday (26/10) | 
+----------+--------+-------------------+ 

我想显示:

+-------+----------+--------+-------------------+ 
| i  |COUNT(*) | amount | daily    | 
+-------+----------+--------+-------------------+ 
| 1  |  1 | 195 | Tuesday (25/10) | 
| 2  |  4 | 470 | Wednesday (26/10) | 
+-------+----------+--------+-------------------+ 

本质i将是连续的数字(即1,2,3,4,5,6 ...)。

我该如何做到这一点?

+6

去做这个?从记录集中拉出时在目标环境中迭代。 –

+0

检查此贴:http://stackoverflow.com/questions/304461/generate-an-integer-sequence-in-mysql – Raihan

+0

@ TomalakGeret'kal我想要生成一些flot图表。 –

回答

4

没有ROW_NUMBER(),您可以伪造它per this answerthis one

SELECT @i := @i + 1 AS i, COUNT(*), ... 
    FROM affiliates_earnings 
    JOIN (SELECT @i := 0) dummy 
    WHERE ... 
GROUP BY ...; 
+0

SELECT @i:= @i + 1 ** as i **,... – Bohemian

+0

@Bohemian,挺对的。更新。 – pilcrow

2

这样做几乎是废话,但如果你真的想,尝试这样的:你为什么要

SELECT 
    @i:[email protected]+1 as i, 
    COUNT(*), 
    SUM(a.amount) AS amount, 
    FROM_UNIXTIME(a.added, '%W (%e/%m)') AS daily 
FROM affiliates_earnings a, (SELECT @i:=0) b 
WHERE a.added >= '1319074836' 
    AND a.added <= '1319679636' 
GROUP BY a.daily