我想更新一张桌子。
我的表结构是:
MainTable
:
id | status | type | user
OtherTable
:
id | flag
在此,我要更新status
的所有user
和MainTable
字段,排除status='Stop'
以及flag
未设置OtherTable
的位置,即0
,但是怎么样?
OtherTable
仅保留type='EMP'
的值。
更新:我想在MainTable
type ='EMP'
条记录
答案 0 :(得分:1)
Update MT set user='someuser', status = "somestatus"
FROM MainTable MT
Join
(
Select *
from MainTable MT1
Join Othertable OT on MT1.Id = OT.Id
AND OT.Flag = 0
and MT1.type='EMP'
Union All
Select *
from MainTable MT2
WHERE MT2.id not in (Select ID FROM Othertable where Flag = 0)
and MT2.type='EMP'
) tblOther
on MT.ID = tblOther.ID
答案 1 :(得分:1)
智能答案由@Asif给出
这是适合我要求的更简单/替代方式
`update MainTable
set status='someStatus'
where
status!='Stop'
and check_type!='EMP'
update MainTable
set status='someStatus'
from MainTable inner join OtherTable on OtherTable.id=MainTable.id
where
OtherTable.flag=1`
答案 2 :(得分:0)
使用子查询......
Update MainTable Set user="" where status='STOP' and id in (select id from OtherTable
where Flag!=0)