我正在尝试更新表中的值,但是我需要添加一些条件。我找到了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 演示。