sql—在alter table语句中选择

de90aj5v  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(371)

我试图在删除一些行后重置自动增量,但我想得到最后一个索引。当我试图执行它时,我的语法出错了。谢谢您!

DELETE FROM 'database'.'table' WHERE 'columname'='';    
ALTER TABLE abcID AUTO_INCREMENT = (SELECT MAX(abcID) FROM table)
kzipqqlq

kzipqqlq1#

不能在ddl(数据定义语言)语句中使用(子)select或用户变量。
如果您需要在sql中动态地执行该操作,那么您需要构建一个字符串,准备并执行它(假设表t1和t2中列a为auto\ u 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

相关问题