我正在寻找MySQL语句来实现它..有什么帮助吗?
INSERT INTO exam (`id`, `Names`, `Score`)
VALUES
(1, 'Ahmed', 55), (2, 'Jacob', 90),(3, 'Rose', 55),
(4, 'Habib', 90), (5, 'Suhaib', 70), (6, 'Sahil', 70),
(7, 'Gawai', 55), (8, 'John', 55),(9, 'Pawel', 55),
(10, 'Bannaga', 70) ;
我想要的结果如下:
Who Scored 90 :
+-------------------+
| Sl | id | names |
+----+----+---------+
| 1. | 2 | Jacob
+----+----+---------
| 2 | 4 | Habib
+----+----+---------
类似于70和55分......
答案 0 :(得分:3)
您可以使用SELECT
的简单ORDER BY
查询:
SELECT id,Name,Score
FROM exam
ORDER BY Score DESC
请参阅SQL Fiddle中的结果。
更好的解决方案:
SELECT Score,GROUP_CONCAT(id) as ids, GROUP_CONCAT(Names) as Names
FROM exam
GROUP BY Score
ORDER BY Score DESC
结果如下:
SCORE IDS NAMES
90 2,4 Jacob,Habib
70 10,6,5 Bannaga,Sahil,Suhaib
55 3,7,8,9,1 Rose,Gawai,John,Pawel,Ahmed
查看SQL Fiddle中的结果。
修改强>
对于更新的问题,您可以这样做:
SET @row_number:=0;
SELECT @row_number:=@row_number+1 AS Sl_No,id,Names,Score
FROM exam
ORDER BY Score DESC, id ASC;
结果:
SL_NO ID NAMES SCORE
1 2 Jacob 90
2 4 Habib 90
3 10 Bannaga 70
4 6 Sahil 70
5 5 Suhaib 70
6 3 Rose 55
7 7 Gawai 55
8 8 John 55
9 9 Pawel 55
10 1 Ahmed 55
请参阅SQL Fiddle中的结果。