Mysql 在最高分数上加上具体分数

Mysql 在最高分数上加上具体分数,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我想在最高分上加分。 我的桌子是空的 我试着给一个学生的最高3分。第一名得5分,第二名得3分,第三名得1分 我用这个代码来选择最高分 select t1.ID, t1.Name, t1.Section, t1.Marks from myTable t1 join (select Section, substring_index(group_concat (distinct Marks order by Marks desc), ',', 3) as Marks3 from myTabl

我想在最高分上加分。 我的桌子是空的

我试着给一个学生的最高3分。第一名得5分,第二名得3分,第三名得1分

我用这个代码来选择最高分

select t1.ID, t1.Name, t1.Section, t1.Marks from myTable t1 join 
(select Section, substring_index(group_concat
 (distinct Marks order by Marks desc), ',', 3) as Marks3  
 from myTable group by Section ) tsum  on t1.Section = tsum.Section 
  and find_in_set(t1.Marks, tsum.Marks3) > 0 ORDER BY Section, Marks DESC, ID Desc
我想为第一高的分数加5分,第二高的分数加3分,第三高的分数加1分。学生可能会出现重复分数

请参阅

所以我的最终输出

请帮帮我你可以这样做

选择id、名称、节、标记、, 案例等级为1后为5 2时3分 3时1 其他0 终点 从…起 选择s.*,@n:=IF@s=节,IF@m=marks,@n,@n+1,1级,@m:=marks,@s:=section 从学生s中选择@n:=0 i 按节订购,标记说明 Q 点数大于0的 输出:

| ID | NAME | SECTION | MARKS | POINTS | ---------------------------------------- | 1 | S1 | class1 | 55 | 5 | | 7 | S7 | class1 | 32 | 3 | | 3 | S3 | class1 | 25 | 1 | | 10 | S10 | class2 | 78 | 5 | | 14 | S14 | class2 | 78 | 5 | | 6 | S6 | class2 | 66 | 3 | | 2 | S2 | class2 | 33 | 1 | | 13 | S13 | class2 | 33 | 1 | | 4 | S4 | class3 | 65 | 5 | | 11 | S11 | class3 | 65 | 5 | | 5 | S5 | class3 | 43 | 3 | | 12 | S12 | class3 | 43 | 3 | | 15 | S15 | class3 | 25 | 1 | 这是演示

输出:完全符合您的需求

ID  NAME    SECTION MARKS   POINTS
1   S1  class1  55  5
7   S7  class1  32  3
3   S3  class1  25  1
10  S10 class2  78  5
14  S14 class2  78  5
6   S6  class2  66  3
2   S2  class2  33  1
13  S13 class2  33  1
4   S4  class3  65  5
11  S11 class3  65  5
5   S5  class3  43  3
12  S12 class3  43  3
15  S15 class3  25  1

任何可用于筛选出分数为“0”的记录的筛选查询?都是围绕您的小提琴进行的。但没有得到。@PraveenPrasannan请参阅更新的答案和SqlFIDLE,以筛选出分数为0的行。@PraveenPrasannan您没有得到什么?@PraveenPrasannan谢谢:由于处理列别名的顺序,在这种情况下,WHERE子句中不提供点。因此有两种选择:1使用2将其全部包装在外部选择中,并使用WHERE+1处理一个漂亮的问题和您为此付出的努力
ID  NAME    SECTION MARKS   POINTS
1   S1  class1  55  5
7   S7  class1  32  3
3   S3  class1  25  1
10  S10 class2  78  5
14  S14 class2  78  5
6   S6  class2  66  3
2   S2  class2  33  1
13  S13 class2  33  1
4   S4  class3  65  5
11  S11 class3  65  5
5   S5  class3  43  3
12  S12 class3  43  3
15  S15 class3  25  1