私は PHP を使用しており、MySQL DB に新しいレコードを挿入するか、存在する場合は単純に更新する必要があります。REPLACE
orの使用を提案しているいくつかの回答を読みましたが、INSERT...ON DUPLICATE KEY UPDATE
よく理解していれば、これらの 2 つのオプションは一意のフィールドまたは主キー (一意) の使用を意味します。私の場合、MySQL テーブルには次のような値があります。
Timestamp | Query1 | Query2 | Result
--------------------------------------------------------
2012-10-13 08:15:27 | American | Men | here result
2012-10-13 08:15:23 | American | Men | result2
2012-10-13 08:15:27 | American | Women | other result
2012-10-13 08:15:27 | German | Men | here result
したがって、「query1」、「query2」、および「Result」は同じ値を持つことができるため、主キーまたは一意のフィールドを持つことはできません (たとえば、「American」(query1) と「Men」(query2) を含むより多くのフィールドを持つ複数のレコードを持つことができます)。そして異なる結果。
現時点では、PHPで使用しています:
INSERT INTO results (Timestamp, Query1, Query2, Result) VALUES ('$current_timestamp', '$nationality', '$gender', '')
すべてのレコードを追加して、巨大な DB を作成するだけです。しかし、私が達成したいのは、query1&query2&result の組み合わせ全体が存在しない場合にのみ、新しいレコードを追加することです。それ以外の場合は、「タイムスタンプ」フィールドを更新したいだけです。
たとえば、私の PHP スクリプトが次のデータを生成するとします。
Timestamp | Query1 | Query2 | Result
2012-10-13 08:15:23 | American | Men | result2
データベースにはすでに「American」&「Men」&「result2」の正確な組み合わせが含まれているため、フィールド「timestamp」だけが更新されます。それ以外の場合、組み合わせが異なる場合 (例: "American" "Men" "result3")、新しいレコードがテーブルに追加されます。
よろしくお願いいたします。