比如说,我有一个只有两个字段的表t,如下所示
ID VALUE
---------------------
0 100
0 103
0 101
0 102
...
...
...
0 110,000,000
我需要使用id字段的顺序更新它们并更改表,如下所示:
ID VALUE
---------------------
1 100
2 101
3 102
4 103
...
...
...
109999901 110,000,000
如何在mysql中编写sql脚本来实现这一点?在甲骨文里似乎要容易得多。
2条答案
按热度按时间yftpprvb1#
一种方法是:
但是,更好的方法可能使用变量:
对于这些,您需要一个索引
(value)
. 不过,只要创建一个新表,性能就会更好。rm5edbpk2#
如果您使用的是mysql 8+,那么我建议您实际上不要进行此更新,而是使用select和
ROW_NUMBER
:如果您经常需要以这种方式查看数据,您还可以将上述选择放入一个视图中并使用它。不想做更新的原因是你应该插入新的
ID
如果值出现在当前序列的中间,则可能会强制您再次运行更新。这可能会成为一个负担后,一段时间。