Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用join编写更新查询_Sql_Join - Fatal编程技术网

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