回答

收藏

MySql中的条件更新

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

我正在尝试更新表中的值,但是我需要添加一些条件。我找到了CASE函数,但是如果是最好的方法,我就不知道了。这是一个例子:
' @: L  U; T) k; t1 c3 K! q7 ^0 Q我的表是例如“关系”
: R7 [/ w- F8 w; Z" Iuserid1 | userid2 | 名称1 | 名称2/ v+ h2 L5 r5 s. A/ K
我举个例子:
& g" g, j7 c' n0 A0 h. v+ _SELECT *
; n6 C! x6 M: ]* E: Y' _4 p. H/ q  FROM relation / C$ @- o& R" i% q! \: M1 m5 U
WHERE (userid1 = 3 AND userid2 = 4)
, t, K/ n  v& w# z' Y* U3 [    OR (userid1 = 4 AND userid2 = 3);, t+ Y% l5 A, v/ J% t2 b1 E1 G
输出:
3 \, V& x" E0 N" u4 | 3 | 帐单| 杰克
# _9 b6 _+ T, W- L. k我想在3和4之间的关系中更改用户3的名称,但我不知道它是userid1还是userid2。
8 s! ]6 @: Q# c/ j1 q, y我虽然如此4 v: L' ~, Y# a) x) C' `
UPDATE relation
( Y7 X; N* V: z# T# _; ]  k& v   CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END * w4 O3 d: }3 d4 v7 T- i
        WHEN userid2 = 3 THEN SET name2 = 'jack' END + g. x' f9 p* j$ A, ~# j; m( E" z
WHERE (userid1 = 3 AND userid2 = 4)
# p" |. M4 j  R2 a9 M; ~7 q/ X$ O    OR (userid1 = 4 AND userid2 = 3);: @7 T# C* Y6 r3 L( p2 [; F
但这是行不通的!有任何想法吗?首先十分感谢。
$ R2 w# {8 r8 j5 u8 \- v, }4 q* y               
1 P' `  \) ?* m& L解决方案:/ s3 B. g; O, E3 t
               
7 V7 _* J* P3 B) R/ M( m
( T* B- z9 G/ T/ V6 N) e# ], G% n' q/ _4 X
                不幸的是,最终要获得的结果还不是很清楚,但是这就是您可以如何SET在您的条件中正确使用条件的方法UPDATE7 y+ B  K1 z! r9 r  S
UPDATE relation
! o1 [0 ^4 d9 ^5 V. O% v   SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END,
6 I- ]: a; @$ L: H/ h       name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END
" c3 I1 v  z! P& x; U* X. V- m/ zWHERE (userid1 = 3 AND userid2 = 4) . s' d" e! m& j9 J0 n' U! M
   OR (userid1 = 4 AND userid2 = 3);
/ s& |4 q) f+ o' B9 N  J这是 SQLFiddle 演示。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则