Ryu*_*yun 12
如何使用变量进行简单查询:
set @ROW = 0;
UPDATE `tbl_example` SET `id` = @ROW := @ROW+1 ORDER BY `fld_date` ASC;
Run Code Online (Sandbox Code Playgroud)
这将按您的日期命令您的行,如:0,1,2,4,5 ...等.
为什么要将ID序列与日期相关联?这听起来像你想做的,ORDER BY id并按行日期顺序返回行.如果您想要按日期顺序排列,请ORDER BY date改用.
自动增量ID列中的值应视为任意值.依赖于您的ID在日期顺序是一个坏主意.
以下SQL代码段应该可以执行您想要的操作.
ALTER TABLE test_table ADD COLUMN id2 int unsigned not null;
SET @a:=0;
UPDATE test_table SET id2=@a:=@a+1 ORDER BY `date`;
ALTER TABLE test_table DROP id;
ALTER TABLE test_table CHANGE id2 id int UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (id);
Run Code Online (Sandbox Code Playgroud)
请记住,一旦开始插入和删除数据,就无法保证自动递增列的顺序,因此除了ORDER BY在查询中指定的顺序之外,不应该依赖任何顺序.这是一项昂贵的操作,因为它需要完全重新创建索引,因此我不建议经常这样做.
| 归档时间: |
|
| 查看次数: |
37601 次 |
| 最近记录: |