2017-12-04 4 views
0

と一致しないクエリを挿入し、私はこのようにMySQLのにいくつかのデータを挿入したいと思います:MySQLの値が

INSERT INTO user_data (user_id,value) VALUES (1,2) 

は、ユーザーのために同じ値が存在しないことを確認する方法はありますか? user_idの値がまだ存在しない場合にのみデータを挿入しますか?

したがって、基本的にuser_idは複数の値を持つことができます。私はこれがユニークなフィールドを行うことができます知っています。しかし、私はSQLクエリでこれを行うために探しています

+1

両方の列に一意の主キーを作成します。 – panther

+0

あなたは競合条件を得ることができるSQLクエリでこれをしたくありません。user_idでPRIMARY KEYまたはUNIQUE KEYを作成すると、値が最適な解決方法です –

+0

これはUNIQUE値で行うことができますが、私の元の投稿では、私はこの特定の挿入がSQLクエリで行われる必要があります。なぜなら、これをバックデートデータに使用しているために、テーブルフィールドで非ユニーク – Ahmed

答えて

0

他の人がコメントで指摘しているようにあなたがテーブルにUNIQUEキーを追加することができ、その後、あなたは、単にINSERT INTO ... ON DUPLICATE KEY UPDATE

を使用することができますしかし、あなたが言ったので、それはこれができたオプションでない場合、それは/簡単に良いだろう同じく作業する

INSERT INTO user_data (user_id, value) 
SELECT * FROM (SELECT 1, 2) AS tmp 
WHERE NOT EXISTS (
    SELECT user_id FROM user_data WHERE user_id = 1 AND value = 2 
) LIMIT 1; 
0

INSERTステートメントと組み合わせてNOT EXISTSを使用できます。

INSERT INTO user_data (`user_id`, `value`) 
SELECT DISTINCT 1,2 
FROM `user_data` 
WHERE NOT EXISTS (
    SELECT * FROM `user_data` 
    WHERE `user_id` = 1 AND `value` = 2 
); 

これは、それが存在しない場合にのみ挿入するようにします。