• 締切済み

mysqlでコード毎に連番をつける方法について

phpで会員制サイト制作を勉強しています。 mysqlにpdoで接続をしています。 添付画像のように種類毎に連番を付与してデータをINSERTしたいのですが、 ネットで調べて色々なSQLを試したところ、 コード毎での連番がうまくいきませんでした。 どのようなSQL文を使えば連番を振ってINSERTできるでしょうか? 一応、種類カラムと連番カラムを複合主キーにしています。 お分かりになる方は教えていただけると有難いです。

みんなの回答

noname#244856
noname#244856
回答No.4

あ、「IFNULL(MAX(連番), 0) + 1」のほうがいいですね…

noname#244856
noname#244856
回答No.3

MyISAMだと "推奨はされませんが" 複数のプライマリキーを設定することにより自動化出来るようです↓ http://stackoverflow.com/questions/18948983/mysql-autoincrement-field-in-composite-primary-key-for-each-unique-combination 普通にSQLでやるなら↓ $sql = ' INSERT INTO テーブル(種類, コメント, 連番) SELECT (:種類, :コメント, MAX(連番) + 1) WHERE 種類 = :種類 '; $params = [ ':種類' => 'ここに種類を記載', ':コメント' => 'ここにコメントを記載', ]; $pdo->prepare($sql)->execute($params);

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

SQL文でinsert/selectを使えばいいと思います。 insert into `テーブル名` (`種類`, `comment`, `連番`) select 'A', 'comment_A_2', ifnull(max(`連番`),0) +1 from `テーブル名` where `種類`='A';

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

INSERTする前に 種類を条件にSELECTして種類ごとに連番のMAXを取得 それからMAX+1してINSERTすればいいわ

関連するQ&A