首页 > 解决方案 > 如果我从一个完全不相关的表中更新一个表,MS SQL Server 会做什么

问题描述

所以说我有两张桌子,TableA并且TableB. 它们完全不相关。它们没有公共列,没有外键约束等。

看来我可以执行

UPDATE TableA SET some_column = b.unrelated_column FROM TableB b;

并且它没有错误地完成。

但是这里发生了什么?没有有意义的方法来匹配两个表中的行,那么 SQL Server 在做什么呢?

标签: sqlsql-server

解决方案


来自UPDATE最佳实践

指定 FROM 子句以提供更新操作的条件时要小心。如果 UPDATE 语句包含未指定的 FROM 子句,则该语句的结果未定义,使得每个更新的列出现只有一个值可用

好吧,这里肯定是这样!所以发生的情况是,表 A 的每一行都将其some_column值设置为表 B中的任意值。 unrelated_column


推荐阅读