繁体   English   中英

ALTER 表语句中的 Select

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM