我有一个包含四列的表,并希望根据该行的col1更新col4(如果其col3值为false),该行具有col3的真值并且其col2等于更新的col2。 数据就像
1 JOhn false NULL
2 Hony false NULL
3 John true NULL
4 Rohn false NULL
5 Hony true NULL
我希望第一行的col4有3个,第二行的col4有5个。
我的查询是
Update tab
set tab.col4 = tab.col1
from table tab
where tab.col3 = true
但它只更新具有真实价值的行。
答案 0 :(得分:1)
您需要使用自我加入:
UPDATE a
SET a.col4 = b.col1
FROM mytable b
JOIN (SELECT col1, col2
FROM mytable
WHERE col3 = true) b ON a.col2 = b.col2
WHERE col3 = false
答案 1 :(得分:1)
刚试过SQL Fiddle:
create table tbl_SO_19
(
col1 int,
col2 varchar(50),
col3 bit,
col4 int
)
go
insert into tbl_SO_19
values
(1,'John',0,null),
(2,'Hony',0,null),
(3,'John',1,null),
(4,'Rohn',0,null),
(5,'Hony',1,null)
现在您可以使用以下查询来更新它,如您所愿:
Update tbl_SO_19
set col4 = t.col1
from tbl_SO_19 join tbl_SO_19 t on t.col2=tbl_SO_19.col2 and t.col3=1
where tbl_SO_19.col3 = 0