Mysql 反转分组查询的序列号

Mysql 反转分组查询的序列号,mysql,Mysql,以下查询根据用户投票的次数排序投票。。。我想知道特定用户队列中的# SELECT @s:=@s+1 serial_number, user_id, COUNT(slug_owner) as cnt FROM `votes_queue`,(SELECT @s:= 0) AS s GROUP BY slug_owner ORDER BY cnt DESC serial_number | user_id | cnt  3 | 19 | 8 2 | 14 | 4 1 | 13 | 2 基本上,

以下查询根据用户投票的次数排序投票。。。我想知道特定用户队列中的#

SELECT @s:=@s+1 serial_number, user_id, COUNT(slug_owner) as cnt 
FROM `votes_queue`,(SELECT @s:= 0) AS s 
GROUP BY slug_owner
ORDER BY cnt DESC 

serial_number | user_id | cnt 
3 | 19 | 8
2 | 14 | 4
1 | 13 | 2

基本上,我需要颠倒序列号列中的数字,以便根据投票情况判断用户13是3。

生成有序计数后分配序列号:

SELECT @s:=@s+1 serial_number, temp.*
FROM (
    SELECT user_id, COUNT(slug_owner) as cnt 
    FROM `votes_queue`,
    GROUP BY slug_owner
    ORDER BY cnt DESC
) temp, (SELECT @s:= 0) AS s

生成有序计数后分配序列号:

SELECT @s:=@s+1 serial_number, temp.*
FROM (
    SELECT user_id, COUNT(slug_owner) as cnt 
    FROM `votes_queue`,
    GROUP BY slug_owner
    ORDER BY cnt DESC
) temp, (SELECT @s:= 0) AS s

序列号不会反转,因为
分组依据
和变量不会混合。按订购即可。您可以使用@hjpotter92的解决方案,但以下内容也解决了此问题:

SELECT (@rn := @rn + 1) as serial_number, t.*
FROM (SELECT serial_number, user_id, COUNT(slug_owner) as cnt 
      FROM `votes_queue`
      GROUP BY slug_owner
     ) t CROSS JOIN
     (SELECT @rn := 0) params
ORDER BY cnt DESC;

我认为表演是一样的。我给出这个答案只是为了澄清实际的问题。

序列号没有反转,因为
分组方式和变量不会混合。按
订购即可。您可以使用@hjpotter92的解决方案,但以下内容也解决了此问题:

SELECT (@rn := @rn + 1) as serial_number, t.*
FROM (SELECT serial_number, user_id, COUNT(slug_owner) as cnt 
      FROM `votes_queue`
      GROUP BY slug_owner
     ) t CROSS JOIN
     (SELECT @rn := 0) params
ORDER BY cnt DESC;

我认为表演是一样的。我给出这个答案只是为了澄清实际问题。

谢谢。这真的很有帮助!谢谢这真的很有帮助!我同意@hjpotter92的回答。感谢分享第二个解决方案。希望它能让其他人受益。我同意@hjpotter92的答案。感谢分享第二个解决方案。希望它能使其他人受益。