如何根据列数来对用户进行排名,列数是用户在表中存在的次数的计数。如果2个用户具有相同的计数,则应该给予最高等级以下的用户,例如:用户1和2具有计数3然后,用户1是等级1,用户2是等级3,如果有新用户3有计数1,则用户3是等级3。
我该怎么做?我真的很感激任何帮助。谢谢你。
http://sqlfiddle.com/#!2/a9188/2
CREATE TABLE if not exists tblA
(
id int(11) NOT NULL auto_increment ,
user varchar(255),
category int(255),
PRIMARY KEY (id)
);
INSERT INTO tblA (user, category ) VALUES
('1', '1'),
('1', '2'),
('1', '3'),
('1', '1'),
('2', '1'),
('2', '1'),
('2', '1'),
('2', '1'),
('3', '1'),
('2', '1');
响应如下:搜索“1”
的类别user category count rank
1 1 2 1
2 1 2 2
使用的查询:
SELECT USER,
category,
count(*) AS num
FROM tblA
WHERE category=1
GROUP BY USER,
category
ORDER BY num DESC;
答案 0 :(得分:2)
例如,使用子查询:
SELECT
groups.*,
@rank:=@rank+1 AS rank
FROM
(select
user,
category,
count(*) as num
from
tblA
where
category=1
group by
user,
category
order by
num desc,
user) AS groups
CROSS JOIN (SELECT @rank:=0) AS init
- 检查修改后的demo。