MySQL user-defined variables - счетчик строк

guest_mysql
Дата: 14.01.2013 15:35:45
Добрый день, есть вот такая вот база:

id | agent_name | score
1 | sergey | 10
2 | max | 20
3 | alex | 30

и вот такой запрос:

SET @rownum =0;

SELECT @rownum := @rownum + 1 as 'rank', r.agent_name, SUM(r.score) as 'total_score'
FROM rewards r
JOIN logins l ON r.agent_id=l.id
WHERE l.member_id=4
GROUP BY r.agent_name
ORDER BY total_score DESC;

Результат должен быть:
rank = 1; agent_name = alex; total_score = 30
rank = 2; agent_name = max; total_score = 20
rank = 3; agent_name = sergey; total_score = 10

а в итоге всё совсем наоборот:
rank = 1; agent_name = sergey; total_score = 10
rank = 2; agent_name = max; total_score = 20
rank = 3; agent_name = alex; total_score = 30

почему так происходит? Из-за group by? как можно это обойти?

спасибо
miksoft
Дата: 14.01.2013 15:40:07
Вы уверены, что запрос точно такой, как вы показываете? DESC точно стоит именно в этом месте?
guest_mysql
Дата: 14.01.2013 15:54:11
угу, точно такой
miksoft
Дата: 14.01.2013 15:56:26
А если так:
ORDER BY SUM(r.score) DESC
?
quest_mysql
Дата: 14.01.2013 16:06:35
вот так?

set @rownum := 0;
SELECT @rownum := @rownum + 1 as 'rank', r.agent_name, SUM(r.score) as 'total_score'
FROM rewards r
JOIN logins l ON r.agent_id=l.id
WHERE l.member_id=4
GROUP BY r.agent_name
ORDER BY SUM(r.score)DESC

не сработало :(
miksoft
Дата: 14.01.2013 16:10:52
quest_mysql,

Тогда показывайте как вы выводите данные.
Или выполните запрос в консоли mysql.
Akina
Дата: 14.01.2013 16:50:45
ORDER BY 3 DESC
тоже не срабатывает?
rolikoff
Дата: 14.01.2013 18:15:58
немного видоизмененный запрос

mysql> SET @rownum =0;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @rownum := @rownum + 1 as 'rank', r.agent_id, SUM(r.score) as 'total_score' 
FROM rewards r 
JOIN logins l ON r.agent_id=l.id 
WHERE l.member_id=4 
GROUP BY r.agent_id 
ORDER BY total_score DESC;


rank agent_id total_score
3 7 30
2 15 20
1 10 10

3 rows in set (0.00 sec)