[英]Select in an ALTER table statement
我在删除一些行后尝试重置自动增量,但我想获取最后一个索引。 当我尝试执行它时,我得到一个关于我的语法的错误。 谢谢!
DELETE FROM 'database'.'table' WHERE 'columname'='';
ALTER TABLE abcID AUTO_INCREMENT = (SELECT MAX(abcID) FROM table)
您不能在 DDL(数据定义语言)语句中使用(子)select 或用户变量。
如果您需要在 SQL 中动态执行此操作,则需要构建一个字符串,准备并执行它(假设表 t1 和 t2 的列 a 为 auto_increment)。
mysql> select @a:=CONCAT("ALTER TABLE t1 AUTO_INCREMENT=", MAX(a)) FROM t2;
+------------------------------------------------------+
| @a:=CONCAT("ALTER TABLE t1 AUTO_INCREMENT=", MAX(a)) |
+------------------------------------------------------+
| ALTER TABLE t1 AUTO_INCREMENT=3 |
+------------------------------------------------------+
1 row in set (0,00 sec)
mysql> prepare my from @a;
Query OK, 0 rows affected (0,00 sec)
Statement prepared
mysql> execute my;
Query OK, 0 rows affected (0,02 sec)
Records: 0 Duplicates: 0 Warnings: 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.