SQL ALTER TABLE排除列

时间:2014-03-14 15:12:23

标签: mysql sql sql-order-by alter-table

我有一个名为“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

请参阅排名列未更改。

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;