SQL使用select更新许多行

时间:2017-09-28 23:40:34

标签: sql

我有一个table2,其主键ID为table1。我希望您根据与table2兼容的每一行的最后日期对table1进行更新。例如:

 tabela 1           tabela2 

 ID DES  CAN ###### ID DATA-
 1  test 0   ###### 1  12/10/2017 
 2  test 0   ###### 1  12/09/2017  
 3  test 0   ###### 2  12/09/2017
 4  test 0   ###### 3  12/10/2017

我打算只更新table1的记录,其中table2中的ID具有当前日期+15天。试试这个,但它不起作用。

UPDATE table 
SET 
  Col1 = i.Col1, 
  Col2 = i.Col2 
FROM (SELECT ID, Col1, Col2 FROM other_table) i
WHERE i.ID = table.ID 

2 个答案:

答案 0 :(得分:0)

您可以搜索更新语法。

更新表,其中列IN(表连接选择)

答案 1 :(得分:0)

标准SQL将使用两个相关的子查询:

UPDATE table
    SET Col1 = (SELECT Col1 FROM other_table i WHERE i.ID = table.ID),
        Col2 = (SELECT Col2 FROM other_table i WHERE i.ID = table.ID) ;

您可能需要WHERE子句以确保您匹配。

某些数据库允许您设置元组:

UPDATE table
   SET (Col1, Col2) = (SELECT Col1, COl2 FROM other_table i WHERE i.ID = table.ID);

您的配方应该适用于某些数据库(特别是SQL Server和Postgres)。