如何使用SQL(MySQL)对表中的列进行排序?

时间:2011-08-11 10:57:29

标签: mysql sql hibernate

我有一个使用Hibernate与索引列映射的列表。该表如下所示:

mysql> select * from chart;
+----+--------+------+-----------------------+
| id | report | indx | name                  |
+----+--------+------+-----------------------+
|  2 |      1 |    0 | Volume                |
|  3 |      2 |    0 | South Africa (Volume) |
|  5 |      2 |    2 | People                |
|  6 |      2 |    3 | Platforms             |
|  7 |      2 |    4 | People (Gender)       |
+----+--------+------+-----------------------+

正如您所见,图表ID = 4表示报告= 2且indx = 1已被删除。

我需要消除间隙,以便给定报告的所有indx值从0开始依次运行。我可以编写Java代码来对其进行排序,但SQL解决方案将更容易部署。

任何人都知道如何做到这一点?我正在使用MySQL。

1 个答案:

答案 0 :(得分:2)

如果this技术适用于您的MYSQL版本,您可以尝试

 SET @row := -1;
 UPDATE chart
 SET indx = @row := @row + 1
 WHERE report = 2
 ORDER BY indx

但我认为改变设计会更好。