我有一个问题,比如在我的系统中,我有下面的表格:
CREATE TABLE `sales` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`amount` FLOAT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
-- is more complex table
有内容:
+-----+-------+
| id | amount|
+-----+-------+
|2023 | 100 |
|2024 | 223 |
|2025 | 203 |
|... |
|2505 | 324 |
+-----+-------+
我不知道当前的ID(每天都有销售)。我正在尝试将表格规范化。
UPDATE sales SET id=id - 2022;
结果:
+-----+-------+
| id | amount|
+-----+-------+
| 1 | 100 |
| 2 | 223 |
| 3 | 203 |
|... |
| 482 | 324 |
+-----+-------+
问题
我的问题是尝试更改 AUTO_INCREMENT
,例如:
ALTER TABLE sales AUTO_INCREMENT = 483;
这是正确的,但我不知道当前的id :(,我尝试了以下查询:
ALTER TABLE sales AUTO_INCREMENT = (SELECT MAX(id) FROM sales );
这给我造成了一个错误(#1064)。阅读文档告诉我:
在MySQL中,您不能修改表并在子查询中从同一表中进行选择。 http://dev.mysql.com/doc/refman/5.7/en/subqueries.html 我尝试使用变量:
SET @new_index = (SELECT MAX(id) FROM sales );
ALTER TABLE sales AUTO_INCREMENT = @new_index;
但是,这会导致一个错误 :(。