MySQL $ i ++ эквивалент - PullRequest
       3

MySQL $ i ++ эквивалент

0 голосов
/ 27 октября 2011

Запрос, который я использую:

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 ...).

Как бы я это сделал?

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

Без ROW_NUMBER () вы можете подделать его за этот ответ или этот :

  SELECT @i := @i + 1 AS i, COUNT(*), ...
    FROM affiliates_earnings
    JOIN (SELECT @i := 0) dummy
   WHERE ...
GROUP BY ...;
2 голосов
/ 27 октября 2011

Это почти бессмысленно, но если вы действительно хотите, попробуйте так:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...