回答

收藏

MySql中的条件更新

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

我正在尝试更新表中的值,但是我需要添加一些条件。我找到了CASE函数,但是如果是最好的方法,我就不知道了。这是一个例子:
' @% S5 l! O$ E7 Q$ m# Z# n6 Z2 F我的表是例如“关系”
" V% a9 l  z( C, H% w3 [0 C3 ~userid1 | userid2 | 名称1 | 名称29 e( d' s) R; j7 z1 M; R
我举个例子:
+ s2 H: x: N3 Y* Y" e% Z+ l7 GSELECT * * B( y  M. I( }. e3 u& r
  FROM relation 4 o! F4 _5 I1 F
WHERE (userid1 = 3 AND userid2 = 4)
7 d2 w, \0 g* p# B6 z  r    OR (userid1 = 4 AND userid2 = 3);
; Q& o/ ^/ R2 S5 L& ~0 a! `9 [8 ~' h输出:1 k& g  B( Q; h8 t) o
4 | 3 | 帐单| 杰克
3 }2 j$ `* a7 x8 o, g& H" B我想在3和4之间的关系中更改用户3的名称,但我不知道它是userid1还是userid2。( E4 L4 t! L: N! y- a( I; J! ], K
我虽然如此7 h8 V1 K% A: Q, B+ I. K# P
UPDATE relation 4 Z% O  W/ q7 P5 s
   CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END
6 `& P1 [' F8 L7 H        WHEN userid2 = 3 THEN SET name2 = 'jack' END " y! m  h/ M+ \5 M5 F
WHERE (userid1 = 3 AND userid2 = 4) - t* }$ }9 d6 g7 l; Q
    OR (userid1 = 4 AND userid2 = 3);
' v  K" V# |9 j但这是行不通的!有任何想法吗?首先十分感谢。/ G; a% m' S" C0 ^& N
                0 n9 o" G. {" [: F; o+ g# v, |
解决方案:
: @. ^  U% H( L. ^( o( e               
9 t8 {; m; v. W& V( v
$ h. |+ @8 e/ K# ?* ?& ~  V9 u
. ]$ H( t% c) W6 u7 A6 r/ i2 b3 m                不幸的是,最终要获得的结果还不是很清楚,但是这就是您可以如何SET在您的条件中正确使用条件的方法UPDATE
% D  D2 v3 h5 T: iUPDATE relation 7 ]2 c7 S- u" z' f
   SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END,9 _& w: m* y! {# m' ^
       name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END
3 B/ F6 |7 V6 |- nWHERE (userid1 = 3 AND userid2 = 4)
% g" E. X( K/ |   OR (userid1 = 4 AND userid2 = 3);5 Y$ ?7 f; _  o, h
这是 SQLFiddle 演示。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则