一般来说update一个表, 使用where语句即可:0 z O8 p) D" s7 g+ H. H7 U
代码如下:. E: p {; Z2 K8 _: P; i4 i
update ttest set
, t5 W( Z# {+ I/ Kstatusind = 'active'* [7 ]7 r5 O0 X5 e* q3 K
where
W7 ~9 n6 s' ~, p: Wid = 123! V/ H$ G4 l; `0 t: U/ t5 S
注意:
8 J2 e0 [- n0 |2 pupdate 语句后面的table名称,是不可以启用别名的。
: p7 N) L6 J( V6 F) G那么此时的id字段,就是来自ttest表的(无可厚非)
, f( x4 I+ q: U/ {但是,如果update,还有额外的join table 条件约束,语句如下:8 [" h1 ~& I3 u2 t
代码如下:" t& N% V: u; `9 m+ ^
update ttest set) L0 a" B# x, @
statusind = 'active': l" G9 l6 a; Y0 t- T1 |* j* e6 u# v
from: q& @6 I6 y! F$ o8 x5 V4 @
tparent parent
% i, E! `( a# L9 F& mwhere; n C3 ]! q3 z. Y# B, N I/ V
ttest.id = 1235 G9 t& r2 @* z( p1 ~
and ttest.parentid = parent.id/ E$ v& o0 Z$ }5 X9 {6 k
and parent.statusind = 'active'
. p3 B+ v8 u' p% x. \0 S/ Q( Y注意:5 N1 m0 ]7 c) U& E, {; Q' a; b: L
update 后面的ttest 不能使用别名* x5 p- N& x: z, f9 K. m, c, L
那么定位到,要修改的ttest记录,就必须这样写:ttest.id = 123
2 X5 |2 i7 H3 I, z如果直接写id=123, 会分不清是 ttest 表 还是 tparent 表的 id1 O6 x" }$ Y/ N& W! f8 v1 A4 k
此sql语句的意思是,如果想修改自身的statusind属性,得关联其parent的statusind属性是否也是'active'
; n1 i+ N6 U# I9 D此时,层级关系是使用两个表(ttest和tparent)来定义 。
) p$ y8 P( n- ` i, u, L9 E% Z但是如果,数据库表的设计,只是用一个表(ttest),来表述数据之间的层级关系(ttest.parentid = ttest.id),
) A! N, p9 ]2 W2 |6 R# e如何书写,可以实现目的呢?(如果想修改自身的statusind属性,得关联其parent的statusind属性是否也是'active')
) K( L8 r# A& I实现如下:
. V( P* c, i$ [. h/ O- |* A代码如下:9 U5 ~/ ?3 m/ V% P6 {: {% e
update ttest set
: S) M; X2 C# O: p- F) pstatusind = 'active'/ d2 t( W" w, U! X
from# }' v* x0 a t/ D7 U9 r1 t
ttest parent,1 U' n# [1 G) i1 h) x$ A/ R
ttest
1 c; m C3 ]1 f& {4 |; Owhere O/ C1 M& ^3 i' f
ttest.id = 123' C0 x; S/ B- ~2 p4 y" u: ]8 q$ y
and ttest.parentid = parent.id1 E4 Y) N3 o. Q$ c; r3 e
and parent.statusind = 'active'4 y4 X- T& F4 C( D- W
解释:6 r8 G6 [7 E3 {
其需求是:修改自身的statusind属性,得关联其parent的statusind属性是否也是'active', p) N% Z, N ?; B8 E' j' D: _
update 后面的表(ttest)不能,命名别名!
0 _$ `3 d9 F: ?; v+ z3 afrom 后面的表 也是 ttest,但是 要update的ttest 记录 和 from ttest 记录并不一样 (要update 孩子,但是要from 关联其父亲)5 |- H% B& [: z& v; o
* ?) P7 e- z* }4 e( A; M( ?) e
更多网页制作信息请查看: 网页制作 |
|