1

重複の可能性:
MySQL で「存在しない場合に挿入」する方法は?

挿入がいくつかありますが、同じ情報がまだそこにない場合にのみ、実際に挿入したいのです。

WHERE NOT EXISTS を使用してのみ挿入を実行したいのですが、それをクエリに追加するのを手伝ってくれる人はいますか?

クエリ:

$db->Query("INSERT INTO `surfed` (site) VALUES('".$id."')");

本当にありがとう!

4

3 に答える 3

4

IGNOREキーワードを使用する

INSERT IGNORE INTO surfed (user, site) VALUES('".$data['id']."', '".$id."')

user-の組み合わせに一意のキー制約がある場合、site通常、重複時にエラーが生成され、挿入が中止されます。ignoreinsertステートメントで使用すると、エラーが無視され、何も挿入されません。

IGNOREキーワードを使用すると、INSERTステートメントの実行中に発生したエラーは代わりに警告として扱われます。... IGNOREを使用しても、行は挿入されませんが、エラーは発行されません。

詳細については、こちらをご覧ください

SQLFiddleの例

于 2012-10-29T16:17:29.623 に答える
0

まず、2 つの列を結合キーにする必要があります。次にINSERT IGNORE、juergen d で概説されているように使用するか、使用します

ON DUPLICATE KEY UPDATE user=user

ここで同様の質問を参照してください: INSERT ... ON DUPLICATE KEY (何もしない)

サイト列のみを持つという改訂された質問については、サイト列が一意のキーまたは主キーであることを確認してから、

$db->Query("INSERT INTO `surfed` (site) VALUES('".$id."') ON DUPLICATE KEY UPDATE site=site");
于 2012-10-29T16:24:52.367 に答える
0

mysql_num_rows を使用できるはずです。それが 0 の値を返す場合、テーブルには挿入したいものと一致するものは何もありません。(存在しない場所)。したがって、「mysql_num_rows = 0 の場合は挿入し、そうでなければ何もしない」のようなものを作成します。

于 2012-10-29T16:32:57.057 に答える