使用mysql中的内部联接语法更新表

时间:2012-08-15 00:29:00

标签: mysql sql join sql-update inner-join

我很好奇如何使用内部联接更新表。如果我运行以下声明:

update tbl1 a
inner join tbl2 b using (id)
set a.val = b.val;

tbl1中没有匹配的tbl2记录会发生什么?它们是否会被更新并保留在tbl1中?它们会被删除吗?

我意识到我可以运行这个并得到答案,但我也对这在幕后如何工作的机制感兴趣,并希望有人可以为我阐明这一点。

2 个答案:

答案 0 :(得分:1)

问: tbl1tbl2中没有匹配的记录会怎样?

答:由于tbl2没有匹配,因此不会更新。根据定义,INNER JOIN关键字在两个表中至少有一个匹配时返回行。唯一可以从表中删除记录的关键字是DELETE DML。

答案 1 :(得分:1)

更新语句在tbl1上运行。

连接提供了一个过滤器,用于指定要在tbl1中更新的行。

作为额外的奖励,联接也为列提供了值。

update语句不会也不能从表中删除行。