如何使用join编写更新查询

时间:2015-01-22 06:10:10

标签: sql join

我需要更新一个名为cp的表,其主键值存在于另一个表uo中。例如,我的cp表格如下所示,其中(col1col2col3)组合是主键:

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 = col1col2 = col2,表col3 = col3中的uo},更新查询。

请帮我解决这个问题。

4 个答案:

答案 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