我正在使用的查询:
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……)。
我该如何做到这一点呢?
发布于 2011-10-27 02:23:21
如果没有ROW_NUMBER(),您可以用per this answer或this one来伪造它
SELECT @i := @i + 1 AS i, COUNT(*), ...
FROM affiliates_earnings
JOIN (SELECT @i := 0) dummy
WHERE ...
GROUP BY ...;
发布于 2011-10-27 02:25:41
这样做几乎是胡说八道,但如果你真的想这样做,试试这样做:
SELECT
@i:=@i+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
https://stackoverflow.com/questions/7910989
复制