如何使用基于连接的值更新特定行?

时间:2013-01-02 16:06:34

标签: sql sql-server tsql join sql-update

  

可能重复:
  SQL update query using joins

表1有2列:

  • 有ID列

  • 有一个日期时间列

表2:

  • 有ID列

  • 有一个日期时间列

我需要根据datetime上表1和表2之间的JOIN更新table 2中的ID列。

示例:

If table1.id = table2.id, 
update datetime column on table2 
with the datetime column value of table1.

这有意义吗?

我将如何做到这一点?

3 个答案:

答案 0 :(得分:4)

有几种选择。相关的子查询应该有效:

UPDATE t2 SET ts = (SELECT ts FROM t1 WHERE t1.id = t2.td) WHERE ...

这是最简单的方法,但对于大型设置来说速度会很慢。另一种方法是直接进行连接。这需要一些略微供应商特定的语法:

T-SQL:

UPDATE table1
SET col1 = t2.col1
FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id

MySQL的:

UPDATE table1 t1 JOIN table2 t2 ON t1.id = t2.id
SET t1.col1 = t2.col2

(通过:http://blog.ookamikun.com/2008/03/mysql-update-with-join.html

答案 1 :(得分:0)

试试这个

UPDATE t2
SET t2.datetime_col = t1.datetime_col
from table1 t1 
INNER JOIN table2 t2 ON t1.id = t2.id

答案 2 :(得分:0)

   Update t2 Set Datetime = t1.DateTime
   From Table1 t1 Join Table2 t2 On t2.id = t1.id