0

私は以下を持っています

Table1 : userid, who, share, date  :: id is auto increment and primary key

レコードが存在するかどうかを確認し、空の場合は新しいレコードを挿入するクエリを作成したいと思います。これを単一のクエリで構築し、単一のクエリを使用して複数のレコードを挿入する方法

data to inser ('a1','a2','a3','a4'), ('b1','b2','b3','b4'), ('c1','c2','c3','c4'), .......
4

3 に答える 3

2
  1. UNIQUE一意にしたい列にインデックスを作成します
  2. INSERT IGNORE一意のデータを挿入し、一意でないものを無視するために使用します
于 2012-02-10T13:24:23.960 に答える
0

INSERT と同じように機能する REPLACE ステートメントを使用できますが、行が既に存在する場合は何もしません。

REPLACE INTO table ...

http://dev.mysql.com/doc/refman/5.0/en/replace.html

于 2012-02-10T13:25:11.773 に答える
0

mysqlINSERT INTOのドキュメントをよく見てください。

「on no exists」を挿入する方法は簡単です。の組み合わせをuser,who,share一意にし、最新の日付を使用するとします。テーブルを更新しUNIQUE KEY、それらのフィールドに作成します。

ALTER TABLE Table1 ADD UNIQUE KEY (user, who, share);

通常、同じ組み合わせを挿入するとエラーが発生しますが、INSERT IGNORE(上記のリンク) を使用するとエラーは黙って無視されます。

INSERT IGNORE INTO Table1 (user,who,share,date) VALUES ( 1, 2, 3, NOW());

挿入時にキーを強制的に更新することもできます。

INSERT IGNORE INTO Table1 (user,who,share,date) VALUES ( 1, 2, 3, NOW())
       ON DUPLICATE KEY UPDATE date = VALUES(date);

一度に複数の値を挿入します。これも最初のリンクです。

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
于 2012-02-10T13:29:48.723 に答える