0

我很好奇如何使用内部连接更新表。如果我运行以下语句:

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

tbl1没有匹配的记录会发生什么tbl2?它们会不会被更新并保持原样tbl1?他们会被删除吗?

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

4

2 回答 2

1

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

A:它们不会被更新,因为它们没有来自 的匹配项tbl2。根据定义,INNER JOIN当两个表中至少有一个匹配项时,关键字返回行。唯一可以从表中删除记录的关键字是DELETEDML。

于 2012-08-15T00:30:24.150 回答
1

更新语句在 tbl1 上运行。

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

作为额外的奖励,连接还为列提供了一个值。

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

于 2012-08-15T00:32:47.493 回答