Sql 如何使用join编写更新查询
我需要更新一个名为Sql 如何使用join编写更新查询,sql,join,Sql,Join,我需要更新一个名为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
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
现在我必须将cp
表中第1行和第3行的列col4
更新为'1',因为它在一个更新查询中包含表uo
中的精确匹配(col1=col1
,col2=col2
,col3=col3
)
请帮助我解决此问题。尝试此未经测试的查询:
update `cp` join `ou` on cp.col1=ou.col1 and cp.col2=ou.col2 and cp.col3=ou.col3 set col4=1
根据所讨论的数据库,您可能会也可能不会执行联接,但是,子查询应该可以工作
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
)
这可能会有帮助
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
使用uo中的哪个字段更新cp中的col4?如果你想用uo中的col1更新cp中的col4,其中cp.col1=uo.col1和cp.col2=uo.col2和cp.col3=uo.col3,为什么不更新col4=col1,因为它必须与uo相同。对不起,我理解错误,@HariPrasad Response应该这样做。
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