我试图在删除一些行后重置自动增量,但我想得到最后一个索引。当我试图执行它时,我的语法出错了。谢谢您!
DELETE FROM 'database'.'table' WHERE 'columname'=''; ALTER TABLE abcID AUTO_INCREMENT = (SELECT MAX(abcID) FROM table)
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
1条答案
按热度按时间kzipqqlq1#
不能在ddl(数据定义语言)语句中使用(子)select或用户变量。
如果您需要在sql中动态地执行该操作,那么您需要构建一个字符串,准备并执行它(假设表t1和t2中列a为auto\ u increment)。