-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 でこれを達成するにはどうすればよいですか?

アップデート

これはおそらく、元のテーブルに null 以外のフィールドがないためです。明日見つけたら、ここに解決策を投稿します。

4

2 に答える 2

2

最後のIDを1つインクリメントしたいので、AUTO_INCREMENTcolumnにcolumnを使用してみませんかID

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

エラーは別の言い方をしましたが、問題の原因は挿入に NULL 以外のフィールドがないことでした。

すべてのフィールドに入力すると、正しいMAX(id) + 1クエリが得られました。

于 2013-02-22T15:24:31.703 に答える