我正在尝试更新表中的值,但是我需要添加一些条件。我找到了CASE函数,但是如果是最好的方法,我就不知道了。这是一个例子: . o7 ~$ Z g- S) T我的表是例如“关系” # w1 Z& A- `0 K; h: h1 Q- Cuserid1 | userid2 | 名称1 | 名称2 6 b) N1 y3 {: Q3 n0 m" b我举个例子:5 A) i; Q/ [8 h( B
SELECT * 3 x/ g/ {8 A: v, ?
FROM relation . `' m! `" {; m: N; D0 E3 o3 F
WHERE (userid1 = 3 AND userid2 = 4)+ I r' M) `5 e+ s. J: m0 d
OR (userid1 = 4 AND userid2 = 3); 3 _# d* B) n" O- P7 ^) w输出:5 T5 F9 E9 a, R! n
4 | 3 | 帐单| 杰克0 N& u$ S3 c8 {1 a9 P
我想在3和4之间的关系中更改用户3的名称,但我不知道它是userid1还是userid2。 ' R8 C/ Y }6 G我虽然如此 0 p2 r3 b: W4 d3 G9 ^UPDATE relation ) Z% J% ]% ^+ w% O2 K& ~4 K CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END ' ]: R: l8 y+ d- X$ s/ J0 F" { WHEN userid2 = 3 THEN SET name2 = 'jack' END v" Q! W4 \! ~* q$ v! r WHERE (userid1 = 3 AND userid2 = 4) R9 D0 k) a6 x+ F M OR (userid1 = 4 AND userid2 = 3); 0 T. V' P9 e _$ n但这是行不通的!有任何想法吗?首先十分感谢。/ H+ ?# o% u+ K+ h$ W2 a
4 ]0 r% {0 [. ^' G解决方案:4 d- b' z0 c# `" {, ]8 y
! \: j" E8 }- G- H! T k3 I1 G5 p- g: U' U7 j' T
6 K0 N1 N4 k# ~: ?$ o' H 不幸的是,最终要获得的结果还不是很清楚,但是这就是您可以如何SET在您的条件中正确使用条件的方法UPDATE" L6 U- [# _9 M, M! T4 N9 X
UPDATE relation 3 v8 K' @6 p: U8 F1 d( R) k2 G SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END," M! _5 b: D" i# C% l3 d4 H, `) K6 J; v
name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END" i6 y* r8 j! `* V
WHERE (userid1 = 3 AND userid2 = 4) : s3 F" K( o/ O! T1 o
OR (userid1 = 4 AND userid2 = 3);& u; x a: p. B# x5 x) w
这是 SQLFiddle 演示。