goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

MySQLの存在しないときINSERT,WHERE NOT EXISTSではまる

2015-09-02 16:19:57 | Weblog
MySQLで、企業テーブルに企業がすでに登録されていたら、
登録しないというSQLを書こうとしたとき
(企業テーブル(kigyo)の項目は、企業ID(自動採番)、企業名、業種、
英語ではそれぞれkigyo_id,kigyo_name,gyoのとき)

INSERT INTO kigyo(kigyo_name,gyo) VALUES('HP','tech')
WHERE NOT EXISTS (SELECT * FROM kigyo WHERE kigyo_name = 'HP');

とかくと、

ERROR 1064 (42000): 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 'WHERE
NOT EXISTS (SELECT * FROM kigyo WHERE kigyo_name = 'HP')' at line 2

となって、エラーになる。

ここ

http://ooma.blog.jp/archives/mysql_insert_if_exist

でやっているように、VALUESでなく、SELECT文を使う

INSERT INTO kigyo(kigyo_name,gyo) SELECT * FROM (SELECT 'HP','tech') AS TMP
WHERE NOT EXISTS (SELECT * FROM kigyo WHERE kigyo_name = 'HP');

と書くとうまくいく。
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 鹿児島はデジタル土方などの... | トップ | アイデアは、ブレインストー... »
最新の画像もっと見る

Weblog」カテゴリの最新記事