一般来说update一个表, 使用where语句即可:! {0 Q5 x8 j2 ^9 q# p
代码如下:! K% j6 k, @9 q# s9 x# X
update ttest set
! |# x9 w( F# m2 Zstatusind = 'active'% R. m4 X6 y- M/ L
where. F/ v0 r' ?$ c& B# R
id = 123
' Q- @* d3 y; ?, D9 U! l注意:
2 S9 I8 V( @: K' q' K$ Mupdate 语句后面的table名称,是不可以启用别名的。
( t- N( l! i. Z% n4 u+ ]( T6 o5 Q那么此时的id字段,就是来自ttest表的(无可厚非)+ G$ ] j2 K/ n8 p
但是,如果update,还有额外的join table 条件约束,语句如下:/ r2 j4 a$ t. X8 h2 H+ b
代码如下:2 ]6 F8 X% `8 s" M2 ^# | }! k' w
update ttest set1 {, k& K& z! V# P# C) f
statusind = 'active'+ @& V& \# F8 G3 g. l1 Y; \
from
, @( Q. Z& A! m0 T. x. \% b7 A8 ?tparent parent8 z2 u- [9 U' u# [( {% z8 Z; ^6 Q
where% F. T5 x4 L0 f
ttest.id = 123
y2 k5 [' C$ Y" w C5 x, Wand ttest.parentid = parent.id l# A% ^- v* |7 F8 M- I" c+ U
and parent.statusind = 'active'2 M2 b5 K3 B2 X/ y& I
注意:- {' }' g2 N5 _4 @( \
update 后面的ttest 不能使用别名
3 U% o2 B8 p& @$ }, j- Y- i, P那么定位到,要修改的ttest记录,就必须这样写:ttest.id = 123
! q: u# X1 J, F5 ]/ ]如果直接写id=123, 会分不清是 ttest 表 还是 tparent 表的 id3 p6 O3 K7 R- t- w* D8 K6 e
此sql语句的意思是,如果想修改自身的statusind属性,得关联其parent的statusind属性是否也是'active'! Z5 i2 Z6 t2 O7 H' x
此时,层级关系是使用两个表(ttest和tparent)来定义 。: S0 q, _/ ]. ]
但是如果,数据库表的设计,只是用一个表(ttest),来表述数据之间的层级关系(ttest.parentid = ttest.id),
1 ^6 c: j& [6 S8 f8 {如何书写,可以实现目的呢?(如果想修改自身的statusind属性,得关联其parent的statusind属性是否也是'active')
9 [ V# j) A4 g* q6 k9 O0 v( H实现如下:
, I& h' \# x& x" w代码如下:
0 w( i: P6 C: _* ^update ttest set& z3 Q+ a$ P6 {5 e
statusind = 'active'9 B; k, x# ?0 J" X
from
, r( K0 q3 P) n1 [ttest parent,
4 O: M7 @' u/ W. o1 b! b! Dttest
6 L6 K' x8 b+ `where
/ ^5 K+ d5 u, ~0 R; ~. O4 |ttest.id = 123
( ?9 f5 M# r2 W8 a, g6 X3 u3 M- ]and ttest.parentid = parent.id1 Q i$ @: f4 w: n) i* }
and parent.statusind = 'active'
' e* O5 I% V8 X9 }9 t* g解释:! P' t' I! R( y6 I6 g) N2 l
其需求是:修改自身的statusind属性,得关联其parent的statusind属性是否也是'active'- x ?4 [3 w2 k# X5 Q4 [- l* c
update 后面的表(ttest)不能,命名别名!
) j; h8 W+ r8 m& Ofrom 后面的表 也是 ttest,但是 要update的ttest 记录 和 from ttest 记录并不一样 (要update 孩子,但是要from 关联其父亲)0 e& a; [/ L/ C$ i$ z6 V
$ ^( u- F( c% K; s3 F4 s% Q* x4 m
更多网页制作信息请查看: 网页制作 |
|