首页 > 解决方案 > 如何根据MYSQL中ID的增加次数的顺序获得不同的ID

问题描述

如何根据出现次数增加的顺序从一组id中获取不同的id。

For Example , input: 3,1,1,2,2,2

这里 id 2 出现 3 次, id 1 出现 2 次, id 3 出现 1 次。

here is my output 2,1,3

如何使用 mysql 通过单个查询获取这些

标签: mysql

解决方案


假设我们有 2 个表:
1)学生:字段如下:
a)id:INTEGER AUTO INCREMENT PRIMARY KEY
b)名称:VARCHAR
示例数据:

student  
id | name
----------  
1  | A  
2  | B  
3  | C

2)marks:字段如下:
a)id:INTEGER AUTO INCREMENT PRIMARY KEY
b)sid:INTEGER FOREIGN KEY(指学生表中的id字段)
c)subject:VARCHAR
d)marks:INTEGER 样本数据:

marks:
id | sid | subject | marks  
--------------------------
1  | 1   | s1      | 40

2  | 2   | s2      | 50

3  | 2   | s1      | 60

4  | 2   | s2      | 70

5  | 3   | s1      | 80

使用下面的查询来获取不同的学生 ID,并按降序排列引用记录:

SELECT `student`.`id`, COUNT(*) AS `total` FROM `student` INNER JOIN `marks` ON (`student`.`id` = `marks`.`sid`) WHERE 1 GROUP BY `student`.`id` ORDER BY `total` DESC

推荐阅读