[英]update a table using inner join syntax in mysql
我很好奇如何使用内连接更新表。 如果我运行以下声明:
update tbl1 a
inner join tbl2 b using (id)
set a.val = b.val;
tbl1
中的记录在tbl2
没有匹配会tbl2
什么? 他们根本不会更新并保留在tbl1
吗? 它们会被删除吗?
我意识到我可以运行这个并得到答案,但我也对这在幕后如何工作的机制感兴趣,并希望有人可以为我阐明这一点。
问: tbl1
中tbl2
没有匹配的记录会发生什么?
答:他们不会更新,因为他们与tbl2
没有匹配。 根据定义,当两个表中至少有一个匹配时, INNER JOIN
关键字返回行。 可以从表中删除记录的唯一关键字是DELETE
DML。
update语句在tbl1上运行。
连接提供了一个过滤器,用于指定要在tbl1中更新的行。
作为额外的奖励,连接也为列提供值。
update语句不会也不能从表中删除行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.