web-dev-qa-db-ja.com

アイテムが存在しない場合にのみテーブルに挿入します

私のデータベースにはfruitというテーブルがあります:

テーブルfruit

_+-------------+
| id | name   |
+ ----------- +
| 1  | Apple  |
| 2  | orange |
| 3  | banana |
| 4  | grape  |
+-------------+
_

idは主キーです。テーブルにエントリを追加したいのですが、エントリがまだ存在しない場合のみです。

クエリ

_IF NOT EXISTS (SELECT name FROM fruit WHERE name = 'mango')
INSERT INTO fruit (name) 
VALUES ('mango')
_

エラー

Sequel ProというSQL GUIアプリを使用しますが、このクエリエラーは次のようになります。

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 'IF NOT EXISTS (SELECT name FROM fruit WHERE name = 'mango') INSERT INTO frui' at line 1

たぶん

怪しい何かが起こっているかもしれません。クエリは_INSERT INTO frui_で停止している可能性があります。アプリに問題がありますか?それとも私のクエリは間違っていますか?

23
izolate

使用する必要があります

ALTER TABLE fruit ADD UNIQUE (name) 

そして使用する

INSERT IGNORE INTO fruit (name) VALUES ('mango')
52
ShiningLight