我需要更新一个名为cp
的表,其主键值存在于另一个表uo
中。例如,我的cp
表格如下所示,其中(col1
,col2
,col3
)组合是主键:
col1 | col2 | col3 | col4
1 | abc | 2 | null
2 | xyz | 3 | null
3 | mno | 4 | null
我的uo
表是这样的:
col1 | col2 | col3
1 | abc | 2
4 | def | 3
3 | mno | 4
现在我必须在col4
表的第1行和第3行中将列cp
更新为“1”,因为它包含完全匹配(col1 = col1
,col2 = col2
,表col3 = col3
中的uo
},单更新查询。
请帮我解决这个问题。
答案 0 :(得分:0)
尝试这个未经测试的查询:
update `cp` join `ou` on cp.col1=ou.col1 and cp.col2=ou.col2 and cp.col3=ou.col3 set col4=1
答案 1 :(得分:0)
select cp.*
from cp join uo on cp.col1 = uo.col1 and cp.col2 = uo.col2 and cp.col3 = uo.col3
update cp
set cp.col4 = 1
from cp join uo on cp.col1 = uo.col1 and cp.col2 = uo.col2 and cp.col3 = uo.col3
答案 2 :(得分:0)
根据相关数据库的不同,您可能会也可能无法进行联接,但子查询应该可以正常工作。
update cp set col4=1
where exists
(
Select * from ou where ou.col1=cp.col1 and ou.col2=cp.col2 and ou.col3=cp.col3
)
答案 3 :(得分:0)
这可能会有所帮助。
UPDATE T1
SET T1.COLUMN4 = 'VALUE' -- SET YOUR VALUE
FROM cp T1
INNER JOIN uo T2
ON T1.COLUMN1 = T2.COLUMN1
AND T1.COLUMN2 = T2.COLUMN2
AND T1.COLUMN3 = T2.COLUMN3