回答

收藏

MySql中的条件更新

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

我正在尝试更新表中的值,但是我需要添加一些条件。我找到了CASE函数,但是如果是最好的方法,我就不知道了。这是一个例子:7 V! {) ^1 {) {0 m. b& A$ f3 _
我的表是例如“关系”8 O+ l6 N* O- w* J1 ]
userid1 | userid2 | 名称1 | 名称2) j9 x0 b1 d% s7 r& ^
我举个例子:
1 K* T+ W" b5 \5 N' H+ d2 hSELECT * 0 q# _1 s7 j* [5 k7 s! K
  FROM relation
3 J, k! M1 D! y0 @7 m WHERE (userid1 = 3 AND userid2 = 4)
8 h- o. ]5 X. E8 k" ^5 ~    OR (userid1 = 4 AND userid2 = 3);
& t& ]7 p( [# C输出:
; t/ h1 a8 A" G& H3 c; a: n4 | 3 | 帐单| 杰克: B2 z" K+ Y  n5 g% I
我想在3和4之间的关系中更改用户3的名称,但我不知道它是userid1还是userid2。
  W( f' y3 p/ v3 l  L0 c: [  _我虽然如此- X  O: s- z( r5 p% G
UPDATE relation
2 K. K6 N6 ?7 H5 U2 Z8 ?   CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END $ h' n$ [; j! D4 I7 @
        WHEN userid2 = 3 THEN SET name2 = 'jack' END
* I" g/ y/ e3 Y6 O2 R$ {8 r: ] WHERE (userid1 = 3 AND userid2 = 4)
. }5 p/ C- ^4 Y* Q  t" d    OR (userid1 = 4 AND userid2 = 3);6 ]6 s5 x- [1 ~" x# K& y
但这是行不通的!有任何想法吗?首先十分感谢。1 A) ?3 S# ^6 H7 K0 }/ \  B* J- x
                ( b2 U5 j$ ^: e0 B9 a5 h
解决方案:
' p$ Y. h5 o% J: j+ b               
6 M8 V: e  W, f4 }7 C, D
. v" A; k, |  K  x+ Z) {- }5 d& v, n0 k3 i2 ~2 t
                不幸的是,最终要获得的结果还不是很清楚,但是这就是您可以如何SET在您的条件中正确使用条件的方法UPDATE
* Z; T. U: N+ D+ f* q7 E' |1 ]4 rUPDATE relation " ~* [- {# ?& f
   SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END,( q1 Z2 g8 c: ?, r+ g
       name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END: ?; [5 @# G8 V) ], r: f/ r. ~6 U
WHERE (userid1 = 3 AND userid2 = 4) ; s4 z9 K# F7 K/ E, R8 ^2 A, T" C
   OR (userid1 = 4 AND userid2 = 3);
" h& {. G  ]7 }* \这是 SQLFiddle 演示。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则