2012-02-03 10 views
1

twoフィールドabがあるとします。同じフィールドが2つある場合insert else update

ここでは、a = 100 AND b = 120が新しいフィールドを作成する場合に更新するクエリを書きたいとしましょう。

またabが互いに一意である必要があり、私は何を意味することは、2 aにできることである100または2 bに等しい200に等しいが、

aのような複数のフィールドがあることはできません= 100b = 120、私はあなたが私が何を意味するかを願っています。

+0

私は申し訳ありませんが、私は本当にあなたがここに求めているかを理解することはできません... – Marco

+0

フィールドが行に異なっている..あなたは、あなたが何を意味するか明確にすることができますか? – Blorgbeard

+0

「それは新しいフィールドを作成する」とはどういう意味ですか?条件が満たされた場合に行を更新し、そうでない場合は新しい行を追加しますか?まあ、これは私が知っているものに対して1つのクエリでは不可能です... – Marco

答えて

4

(a,b)の組み合わせにUNIQUEという制約がある場合、この機能にはINSERT ... ON DUPLICATE KEY UPDATE ...の構文を使用できます。例:

INSERT INTO TableX 
    (a, b, c, d, e) 
VALUES 
    (100, 200, 1, 2, 3) 
ON DUPLICATE KEY UPDATE 
    c = VALUES(c) 
, d = VALUES(d) 
, e = VALUES(e) 

INSERT INTO TableX 
    (a, b, c, d, e) 
VALUES 
    (100, 200, 1, 7, 20) 
ON DUPLICATE KEY UPDATE 
    c = c + 1 
, d = d + 1 
, e = e + 1