2017-09-26 13 views
0

最初の列がNULLでない場合は2番目の列の値を更新します。それ以外の場合はfitst列を更新します。以下は私がwriitenを持っているクエリですが、このクエリは私に構文エラーを与えています。以下は、私のクエリ以下case文を使用した更新でMySql Query構文エラーが発生しました

UPDATE messages 
SET CASE WHEN delete_one IS NULL THEN delete_one = 9600 ELSE delete_two = 9600 END 
WHERE 
(message_to = 9600 AND message_from = 8625) 
OR 
(message_to = 8625 AND message_from = 9600); 

は、この問題を解決するために助けてください、私はこのクエリ

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'case when delete_one IS NULL THEN delete_one = 9600 ' at line 3 

を実行した後に受け付けております構文エラーです。事前

+1

! MysqlとSQLサーバは同じものではなく、異なるSQL方言を使用します。 – SMor

+0

'更新tablenameセットcolumnname = ...' – jarlh

答えて

2

CASE式は、SETの右側にあることがあります。適切なDBMSのタグを使用して

UPDATE messages 
SET delete_two = CASE WHEN delete_one IS NOT NULL THEN 9600 ELSE delete_two END, 
delete_one = COALESCE(delete_one,9600) 
WHERE 
(message_to = 9600 AND message_from = 8625) 
OR 
(message_to = 8625 AND message_from = 9600); 
0

おかげでCASE式に代入してみてください。

UPDATE messages 
SET delete_one = COALESCE(delete_one, 9600), 
    delete_two = CASE WHEN delete_one IS NULL THEN delete_two ELSE 9600 END 
WHERE 
    (message_to = 9600 AND message_from = 8625) OR 
    (message_to = 8625 AND message_from = 9600); 
関連する問題