質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

4168閲覧

【MySQL】追番をINSERTしていくSQL文

phiilo_

総合スコア85

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2017/07/23 08:55

下記のようなテーブル(MySQL)があったとします。
イメージ説明

次の動物をINSERTしたいのですが、idに追番というか、106, 107, 108...
というように次々に追加していきたいです。

手動でやるなら下記SQL文で良いと思います。

SQL文(MySQL)

1insert into table (id) values (106);

idを1ずつ加算していくようにINSERTするにはどうしたら良いでしょうか?教えてください、お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

最初の回答を改善して、

SQL

1insert into 'table' (id, name) 2 select 3 case 4 when max(id) is null then 100 5 else max(id) + 1 6 end 7 , 'name_text' 8 from 'table'; 9```を回答コードとします。 10[MySQLのMAX値+1](http://oldblog.xenophy.com/index.php?m=11&y=06&entry=entry061126-054906) の記事を参考に直しました。 11 12また、新規レコード作成時にトリガー機能としてこのコードを働かせるようにするのがスマートです。 13 14元の回答を、A.Ichiさんのサポートで直すことができました。ありがとうございます。

投稿2017/07/23 09:30

編集2017/07/23 14:00
seastar3

総合スコア2285

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

phiilo_

2017/07/23 09:33

ありがとうございます。 MAX関数が無い?のか下記のようにエラーとなってしまいました。。。 An opening bracket followed by a set of values was expected. (near "max" at position 35) 予期しないトークン。 (near "max" at position 35) Unrecognized statement type. (near "max" at position 35)
phiilo_

2017/07/23 10:03

せっかくですが、エラーとなってしまいました。 insert into table (id name) select cace when max(id) is null then 100 else max(id) + 1 end, 'name_text' from table; で合ってますか?? 予期しないキーワード。 (near "table" at position 12) Unrecognized statement type. (near "table" at position 12) #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table (id name) select cace when max(id) is null then 100 else max(id) + 1 end, ' at line 1
A.Ichi

2017/07/23 10:28 編集

(id name)を(id, name)として、”end”を"end id"とされたらどうでしょうか?'name_text'も'name_text' name
phiilo_

2017/07/23 10:30

間違っていたらすみません。 insert into table (id, name) select cace when max(id) is null then 100 else max(id) + 1 end id , 'name_text' from table; こうでしょうか?下記エラーになってしまいました。 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table (id, name) select cace when max(id) is null then 100 else max(id) + 1 end ' at line 1
A.Ichi

2017/07/23 11:32 編集

caceではなくてcaseでお願いします。あと、tableはバッククオートで括るのが良いかと。 insert into `table` (id, name) select case when max(id) is null then 100 else max(id) + 1 end, 'name_text' from `table`;
phiilo_

2017/07/23 11:39

できました!とても助かりました!
seastar3

2017/07/23 13:52

A.Ichiさん、ナイスフォローに感謝いたします。 回答も直しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問