4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

INSERT文に(SELECT結果+入力結果)を入れる

Last updated at Posted at 2018-11-15

INSERT文でデータを入れようとすると、データの取得方法によって書き方を間違えてしまうので軽くまとめてみました。大きくまとめると3パターン

全て手入力でINSERT

これは指定した要素数に合わせた数を書けば良いだけ

パターン1
INSERT INTO `テーブル名` (col1, col2, ... )
  VALUES (col1, col2, ...)

SELECT結果をINSERT

ここを書く時にいつも間違えてVALUESを使おうとしてエラーを出してしまいます。

エラー
INSERT INTO `テーブル名1` (col1, col2, ...)
  VALUES (SELECT col1, col2, ... FROM テーブル名2)

正しくはVALUESを使わずにINSERTします。
正解
INSERT INTO `テーブル名1` (col1, col2, ...)
  SELECT col1, col2, ... FROM `テーブル名2`

SELECT結果+手入力

要素を足せば良いのでこの書き方で行けそうな気がしますがこれもエラーになります。

エラー
INSERT INTO `テーブル名1` (col1,col2)
  VALUES (SELECT col1 FROM `テーブル名2`, "col2")

正しくは又してもVALUESを使わずに、該当箇所に直書きします。
正解
INSERT INTO `テーブル名1` (col1, col2)
  SELECT col1, "col2に入れたいデータ" FROM `テーブル名2`

例えば、データベースに登録されていない商品をIDが重複しないように、データを追加したい場合だとこんな感じに書きます。

INSERT INTO `テーブル名` (id,item_name)
  SELECT MAX(id)+1,"商品名" FROM `テーブル名`
4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?