MySQLレコードが存在しない場合の挿入(insert if not exists)

952 ワード

MySQLレコードが存在しない場合の挿入(insert if not exists)
MySQLでは、レコードを挿入するのは簡単ですが、いくつかの特殊なアプリケーションでは、レコードを挿入する前に、このレコードがすでに存在するかどうかを確認する必要があります.レコードが存在しない場合にのみ挿入操作を実行します.本稿では、この問題の解決策について説明します.
質問:顧客情報を格納するテーブルを作成しました.insert文でテーブルに情報を挿入できることを知っていますが、重複したレコードを挿入しないことを保証するにはどうすればいいですか.
答え:EXISTS条件文で重複記録の挿入を防ぐことができます.
例1:複数のレコードを挿入する
クライアントというプライマリ・キーがあると仮定します.idのclientsテーブルでは、次の文を使用できます.
INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE not exists (select * from clients
where clients.client_id = suppliers.supplier_id);

例1:単一レコードの挿入
INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE not exists (select * from clients
where clients.client_id = 10345);

テーブル名にdualを使用すると、select文の後に現在のテーブルに値が存在しなくても、挿入するフィールドの値に直接追いつくことができます.