テーブルから値を更新しようとしていますが、いくつかの条件を追加する必要があります。 CASE関数を見つけましたが、それが最良の方法であるかどうかはわかりません。以下に例を示します。
私のテーブルは、例えば「関係」です
userid1 | userid2 | name1 | name2
私は例えば得た:
SELECT *
FROM realtion
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
出力:
4 | 3 | bill | jack
そして、私は3と4の間の関係でユーザー3の名前を変更したいのですが、それがuserid1であるかuserid2であるかわかりません。
私は場合の
UPDATE relation
CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END
WHEN userid2 = 3 THEN SET name2 = 'jack' END
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
しかし、それは機能しません!何か案は?事前に感謝します。
残念ながら、最後に何を取得したいかはあまり明確ではありませんが、SET
で条件付きUPDATE
を正しく使用する方法は次のとおりです。
UPDATE relation
SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END,
name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
これはSQLFiddleデモです。