一个表中ID Name Number
1 XXX 1
2 XXX 2
3 XXX 3
4 XXX 4
5 XXX 5
6 XXX 6当删除id=4的这条记录之后ID Name Number
1 XXX 1
2 XXX 2
3 XXX 35 XXX 5
6 XXX 6除了像update Tbl set Number = Number -1 where Number >4 的这个方法让NO这个列保持连续,还有别的什么好方法吗?
1 XXX 1
2 XXX 2
3 XXX 3
4 XXX 4
5 XXX 5
6 XXX 6当删除id=4的这条记录之后ID Name Number
1 XXX 1
2 XXX 2
3 XXX 35 XXX 5
6 XXX 6除了像update Tbl set Number = Number -1 where Number >4 的这个方法让NO这个列保持连续,还有别的什么好方法吗?
排序应该不会改变吧,不会因为你4删除了 5就比3大了。如果你要保持连接,看你用的数据库是什么如果是oracle 有一个叫rownum字段。如果是程序可以根据 取出数据的index比如你的是list 那么list肯定是按顺序的这样也可以保持连续,而且不用改动数据库。
mysql 中要自己实现吗?
+------+------+------+
| id | name | num1 |
+------+------+------+
| 1 | a | 1 |
| 2 | b | 2 |
| 3 | c | 3 |
| 5 | e | 5 |
| 6 | f | 6 |
+------+------+------+
5 rows in set (0.00 sec)mysql> update test set num1=(select t.rownum from(
-> select a.id,a.name,count(*) as rownum from test a,test b
-> where a.num1>=b.num1 group by a.id,a.name) t where test.id=t.id);
Query OK, 2 rows affected (0.02 sec)
Rows matched: 5 Changed: 2 Warnings: 0mysql> select * from test;
+------+------+------+
| id | name | num1 |
+------+------+------+
| 1 | a | 1 |
| 2 | b | 2 |
| 3 | c | 3 |
| 5 | e | 4 |
| 6 | f | 5 |
+------+------+------+
5 rows in set (0.00 sec)mysql>
这个方法好像和update Tbl set Number = Number -1 where Number >4 这个一样吧都是同把后面的记录都update了一下,小弟初学,不对的还请指教
FROM MYTEST A
WHERE NOT EXISTS (SELECT '1' FROM MYTEST B WHERE B.UUID = A.UUID + 1)