我有一个名为“leaderboard
”的MySQL表,它有5列'name','regno','dept','gpa','rank'
我已将排名设置为AUTO_INCREMENT
,现在我想按'{{1}排序表}',但行的等级不应该改变。该表应永久分类,而不仅仅是打印输出。
例如: -
gpa
排序后的表应该是这样的: -
regno name dept gpa rank
1 a c 8 1
2 b d 9 2
请参阅排名列未更改。
答案 0 :(得分:1)
我认为你不能得到它,或者你可以得到它!
因为你看到的是存储在数据库中的字节的逻辑表示,所以它都是一种表示!
您可以做的是在gpa
列上为您创建具有特定排序顺序的视图!
你怎么看待这个?
只是为了说明一点: - 我正在复制@SARIN
create view Oreder_data_like_i_want_to_see_it
as
SELECT regno,
name,
dept,
gpa
@curRank := @curRank + 1 AS rank
FROM leaderboard, (SELECT @curRank := 0) r
ORDER BY gpa;
答案 1 :(得分:0)
不是将Rank存储在表中并选择它,而是尝试计算它。尝试以下内容:
SELECT regno,
name,
dept,
gpa
@curRank := @curRank + 1 AS rank
FROM leaderboard, (SELECT @curRank := 0) r
ORDER BY gpa;