重複の可能性:
MySQL で「存在しない場合に挿入」する方法は?
挿入がいくつかありますが、同じ情報がまだそこにない場合にのみ、実際に挿入したいのです。
WHERE NOT EXISTS を使用してのみ挿入を実行したいのですが、それをクエリに追加するのを手伝ってくれる人はいますか?
クエリ:
$db->Query("INSERT INTO `surfed` (site) VALUES('".$id."')");
本当にありがとう!
重複の可能性:
MySQL で「存在しない場合に挿入」する方法は?
挿入がいくつかありますが、同じ情報がまだそこにない場合にのみ、実際に挿入したいのです。
WHERE NOT EXISTS を使用してのみ挿入を実行したいのですが、それをクエリに追加するのを手伝ってくれる人はいますか?
クエリ:
$db->Query("INSERT INTO `surfed` (site) VALUES('".$id."')");
本当にありがとう!
IGNORE
キーワードを使用する
INSERT IGNORE INTO surfed (user, site) VALUES('".$data['id']."', '".$id."')
user
-の組み合わせに一意のキー制約がある場合、site
通常、重複時にエラーが生成され、挿入が中止されます。ignore
insertステートメントで使用すると、エラーが無視され、何も挿入されません。
IGNOREキーワードを使用すると、INSERTステートメントの実行中に発生したエラーは代わりに警告として扱われます。... IGNOREを使用しても、行は挿入されませんが、エラーは発行されません。
詳細については、こちらをご覧ください
まず、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");
mysql_num_rows を使用できるはずです。それが 0 の値を返す場合、テーブルには挿入したいものと一致するものは何もありません。(存在しない場所)。したがって、「mysql_num_rows = 0 の場合は挿入し、そうでなければ何もしない」のようなものを作成します。