我想从汇总查询的输出中向表中插入一个新行:
INSERT INTO table_name (id) SELECT MAX(id) + 1 FROM table_name;
但它失败并出现以下错误:
ERROR 1339 (20000): Case not found for CASE statement
如果我将+ 1
部分添加到聚合函数中,如下所示:
INSERT INTO table_name (id) SELECT MAX(id + 1) FROM table_name;
它产生相同的错误。如果我删除+ 1
部分,它当然会失败,因为id
是主键:
ERROR 1062 (23000): Duplicate entry '48' for key 'PRIMARY'
如何在不修改表结构的情况下在MySQL 5.5.29-0ubuntu0.12.10.1中实现这一点?
这可能是因为原始表中缺少非空字段,如果我明天发现它,我会在这里发布解决方案。
答案 0 :(得分:2)
由于您希望将最后一个ID增加1,为什么不对列AUTO_INCREMENT
使用ID
列。
CREATE TABLE tableName
(
ID INT AUTO_INCREMENT PRIMARY KEY,
....
)
答案 1 :(得分:1)
虽然错误说的不同,但问题的原因是插入中缺少非NULL字段。
填写每个字段会产生正确的MAX(id) + 1
查询。