2011-07-16 13 views
0

この問合せに問題があると、誰もが問題を認識していますか?MYSQL ON DUPLICATE KEY問合せの問題

INSERT INTO options 
    (grouptogether) 
VALUES 
    ('0') 
WHERE userid = '2' ON DUPLICATE KEY UPDATE grouptogether = '0'; 

INSERT INTO options 
    (grouptogether) 
VALUES 
    ('0') 
ON DUPLICATE KEY UPDATE grouptogether = '0' 
WHERE userid = '2'; 

where節の移動の両方の組み合わせを試しましたが、そうではありません。

+0

[ドキュメント](http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html) - - ON DUPLICATE ...構文にはWHERE句がありません。 –

+0

ちょっとしたヒント - 数字の列の値を一重引用符で囲む必要はありません。 'userid = '2'ではなく' userid = 2'です。文字列の中にある数字は、通訳者に正しいタイプにキャストするときに期待する数字とは必ずしも同じではありません。 –

答えて

0

INSERTクエリにはWHERE句がありません。 INSERT INTO...ON DUPLICATE KEY UPDATEクエリでは、更新される行はキー衝突が発生した行です。行をWHERE節で指定する必要はありません。

あなたは、おそらくこのような何かをするためのもの:

INSERT INTO options 
    (userid, grouptogether) 
VALUES 
    (2, '0') 
ON DUPLICATE KEY UPDATE grouptogether = VALUES(grouptogether) 
+0

おかげでトリックでした! – Mark