回答

收藏

MySql中的条件更新

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

我正在尝试更新表中的值,但是我需要添加一些条件。我找到了CASE函数,但是如果是最好的方法,我就不知道了。这是一个例子:
4 f0 o8 }$ R/ V; u我的表是例如“关系”1 p) {3 @+ U0 q" M2 ~
userid1 | userid2 | 名称1 | 名称2
' W0 b5 e* C/ |我举个例子:
' e; n. v# T# n- k/ kSELECT * 2 m& D9 K$ [1 s- T
  FROM relation $ I' R9 {9 N0 r" W
WHERE (userid1 = 3 AND userid2 = 4)* L2 A! X/ c% z: S6 t' ^9 |! R
    OR (userid1 = 4 AND userid2 = 3);* a+ G3 b: R( H- Y- `) r
输出:8 ?2 H: x! a. z1 k, Q
4 | 3 | 帐单| 杰克. g: `1 z9 [0 [7 S! t
我想在3和4之间的关系中更改用户3的名称,但我不知道它是userid1还是userid2。
8 x+ {, z* P1 H# e3 \我虽然如此
6 `4 |$ T% P( {0 s3 o$ v7 DUPDATE relation ) @* J# K9 I; G( L
   CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END
. a6 m4 G: h$ y0 _1 l; j, \        WHEN userid2 = 3 THEN SET name2 = 'jack' END , F+ V) g* o' A# f$ c/ V
WHERE (userid1 = 3 AND userid2 = 4) * v- Y* A9 h8 T) {& S7 J
    OR (userid1 = 4 AND userid2 = 3);
! K3 d, Q) y& h( s但这是行不通的!有任何想法吗?首先十分感谢。
, F* y) d# o, Q# a7 E8 Z& a  y                , [; R2 Q0 \. J9 r& ^* r( ^( q
解决方案:
( O2 v) T, T1 E+ V) o: \               
0 V1 m7 m, `1 P: e# I7 u* N
$ T1 l% s% a3 ]8 U  X! v
; p! j8 Z  y0 c# i9 y8 d* [0 \                不幸的是,最终要获得的结果还不是很清楚,但是这就是您可以如何SET在您的条件中正确使用条件的方法UPDATE
2 {/ _$ ~8 y3 K1 k: iUPDATE relation 0 o# M+ l' a( N' Q$ j* F
   SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END,
, |: O# N6 m. J2 W       name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END5 s8 _8 }5 p1 \" J0 [
WHERE (userid1 = 3 AND userid2 = 4) ' O5 M+ O. A+ u9 h
   OR (userid1 = 4 AND userid2 = 3);
2 e  C9 P* B) v# }9 X/ l这是 SQLFiddle 演示。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则