MySQLはプログラミングブロック(ストアドプロシージャ、ファンクション、トリガ)でIF
ステートメントのみをサポートしています。したがって、あなたはそのようにしたいことをすることはできません。
代わりに、あなただけの単一のクエリを記述することができます。
INSERT INTO Products (product_id, name, category, manufacturer)
SELECT product_id, name, category, manufacturer
FROM (SELECT 10000 as product_id, 'IphoneZ' as name, null as category, 'appl' as manufacturer) t
WHERE NOT EXISTS (SELECT 1 FROM Products p WHERE p.name = t.name and p.manufacturer = t.manufacturer);
は実際には、しかし、それは直接一意のこの種を強制するデータベースを持っていることが最善です。あなたはユニーク制約/インデックスを使用して行うことができます。
CREATE UNIQUE INDEX unq_product_manufacturer_name ON product(manufacturer, name);
を次にあなたが実行してエラーを無視するクエリを書くことができます:
INSERT INTO Products (product_id, name, category, manufacturer)
VALUES (10000, 'IphoneZ', null, 'appl')
ON DUPLICATE KEY UPDATE category = VALUES(category);
ON DUPLICATE KEY
は何もしません - それだけに機能します重複した値が挿入された場合はエラーを返さないようにしてください。
シングルの代わりに二重引用符を使用しますか? – jarlh
マニュアルを読む http://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html – 2oppin
あなたのタイトルと 'mysql'をグーグル:http://stackoverflow.com/questions/5528854/usage-of-mysqls-if-existsが存在します。 [ask]をお読みください。 – philipxy