回答

收藏

MySql中的条件更新

技术问答 技术问答 458 人阅读 | 0 人回复 | 2023-09-14

我正在尝试更新表中的值,但是我需要添加一些条件。我找到了CASE函数,但是如果是最好的方法,我就不知道了。这是一个例子:4 l* K( h9 [* j5 `; u3 p3 {
我的表是例如“关系”
2 c' n; D" z0 G7 ?userid1 | userid2 | 名称1 | 名称20 Q* Y% b  y3 w
我举个例子:  R! \% B7 D1 D4 T6 {  ^
SELECT * / r* }" ^$ q+ N, k  R% w
  FROM relation   q  z1 D5 _: H) z% y
WHERE (userid1 = 3 AND userid2 = 4)+ G+ W0 M; a2 S( r. c, G
    OR (userid1 = 4 AND userid2 = 3);
# A! t8 J9 A7 ], F) v3 I: X输出:* Y4 A3 e: v" M8 L
4 | 3 | 帐单| 杰克
0 Y, O6 u8 }) a% O我想在3和4之间的关系中更改用户3的名称,但我不知道它是userid1还是userid2。: L0 C8 |& w5 }' z
我虽然如此
; o9 n3 ^! O9 B! \* x# Z( ]UPDATE relation
: M3 R, ^6 V; n   CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END
1 w6 g) b' Y  F6 o3 Y3 r2 C        WHEN userid2 = 3 THEN SET name2 = 'jack' END
8 k) `% V/ K4 D8 v: n9 i3 S: s6 \ WHERE (userid1 = 3 AND userid2 = 4)
4 q6 s* H! Y3 W/ g- V2 T+ j    OR (userid1 = 4 AND userid2 = 3);% W& `% t- U9 B0 L! O
但这是行不通的!有任何想法吗?首先十分感谢。
2 C; |* S9 i- F; s! d                9 K- l; m5 I: X  I* C$ s" n( F/ p
解决方案:0 H5 Y; [. c' }% Q; y
               
. ~2 f2 j; ^5 T5 V2 G& j7 d# r! k; M& @+ i" @( O! g; e/ T

/ _: r+ h9 O( S/ P                不幸的是,最终要获得的结果还不是很清楚,但是这就是您可以如何SET在您的条件中正确使用条件的方法UPDATE. b! p4 G; A9 o
UPDATE relation : [3 ]% `$ O0 Y$ o+ |" e, q
   SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END,+ ?, {6 H# d* n
       name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END
* x; H' }1 j1 b4 r8 o9 p1 `1 @WHERE (userid1 = 3 AND userid2 = 4)
2 O& Z5 l/ d" Q1 n/ g! r; U   OR (userid1 = 4 AND userid2 = 3);
3 O& g* d8 ]3 f' `这是 SQLFiddle 演示。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则