-1

我想从聚合查询的输出中向我的表中插入一个新行:

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 中实现这一点?

更新

这可能是因为原始表中缺少一个非空字段,如果我明天找到它,我会在这里发布解决方案。

4

2 回答 2

2

既然你想将最后一个 id 加一,为什么不使用AUTO_INCREMENTcolumn 为 column ID

CREATE TABLE tableName
(
    ID INT AUTO_INCREMENT PRIMARY KEY,
    ....
)
于 2013-02-21T16:19:46.953 回答
1

尽管错误表示不同,但问题的原因是插入中缺少非空字段。

填写每个字段都会产生正确的MAX(id) + 1查询。

于 2013-02-22T15:24:31.703 回答