我有一个使用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。
答案 0 :(得分:2)
如果this技术适用于您的MYSQL版本,您可以尝试
SET @row := -1;
UPDATE chart
SET indx = @row := @row + 1
WHERE report = 2
ORDER BY indx
但我认为改变设计会更好。