Quantcast
Channel: ウィリアムのいたずらの、まちあるき、たべあるき
Viewing all articles
Browse latest Browse all 7268

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

$
0
0
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');

と書くとうまくいく。

Viewing all articles
Browse latest Browse all 7268

Trending Articles