sql - 需要对 UPDATE t-SQL 语句中的 SELECT 进行一些澄清

标签 sql sql-server tsql sql-update

假设我有以下 t-SQL 语句(设计为在 SQL Server 2008 上运行):

UPDATE tbl
SET col1 = (
    SELECT MAX(col1) FROM tbl AS t1 WHERE t1.type = tbl.type
);

在这种情况下 SELECT 到底是如何工作的:

  1. 它会考虑每次更新的结果进行选择,或者

  2. 它从 UPDATE 开始更新记录之前的表中进行选择。

有人可以帮我澄清一下吗?

最佳答案

2!您的子查询 SELECT 会提取 UPDATE 进行任何更改之前确定的值。

关于sql - 需要对 UPDATE t-SQL 语句中的 SELECT 进行一些澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11575635/

相关文章:

sql - 重构SQL

sql - 根据标准 SQL Server 将单列求和为多列

tsql - T-SQL 确定历史表中的状态变化

c# - 在 ASP.NET (C#) 中实现安全、唯一的 "single-use"激活 URL

python - 如何在通过 python 运行时将变量传递到 sql 文件中

mysql - 使用 SELF JOIN 的简单 MySQL 查询

sql - 如何使用 manage.py 加载 .sql 文件

sql - 逃避动态 SQL 的更优雅的方法?

sql - 嵌套选择 - 多部分标识符未绑定(bind)错误

sql - 不是在 SQL 语句中吗?