6

MySQLのマニュアルには次のように記載されています。

ON DUPLICATE KEY UPDATEを指定し、UNIQUE索引またはPRIMARYKEYに重複値を引き起こす行が挿入された場合

UNIQUEインデックスまたはPRIMARYKEYを持たないテーブルがあるが、列のエントリ(user_idなど)を複製したくない場合はどうなりますか。

MySQLでそれを行う方法はありますか?

4

3 に答える 3

6
INSERT INTO `table` (value1, value2) 
SELECT 'stuff for value1', 'stuff for value2' FROM `table` 
WHERE NOT EXISTS (SELECT * FROM `table` 
                  WHERE value1='stuff for value1' AND value2='stuff for value2') 
LIMIT 1

出典:MySQLに「存在しない場合は挿入」する方法は?

于 2012-06-22T16:21:28.073 に答える
2

これを試して:

INSERT INTO `table` (userid)
SELECT 'value for userid' FROM `table` 
  WHERE userid = 'value for userid' HAVING count(*) = 0
于 2012-06-22T17:18:27.923 に答える
1

データベースでデータの整合性を制御する場合、UNIQUEインデックスは、そのデータにUNIQUE制約を作成するMYSQLの方法にすぎません。

データベースにデータの整合性を任せたくない場合は、アプリケーションまたはETLコードを使用して、他の方法でデータを制御する必要があります。通常、これには、値がまだ存在しないことを検証するために事前にテーブルをスキャンしてから、挿入を実行することが含まれます。

あなたが何をしようとしているのかについてより明確な質問をすることで、私たちはより良い答えを与えるのを助けることができます。

于 2012-06-22T16:38:06.750 に答える