回答

收藏

MySql中的条件更新

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

我正在尝试更新表中的值,但是我需要添加一些条件。我找到了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 演示。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则