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');
と書くとうまくいく。
登録しないという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');
と書くとうまくいく。