sql-server - SQL 查询 - 我可以不这样做吗?

标签 sql-server

update TABLE set A = (
SELECT
    CASE
        WHEN B - C >= A  THEN A
        WHEN B - C <  A THEN B - C
    END AS A
from 
TABLE )

我得到的回复是:

子查询返回超过 1 个值。当子查询跟在 =、!=、<、<=、>、>= 后面或子查询用作表达式时,不允许这样做。

最佳答案

不,如果您的表有超过 1 条记录,则该方法不起作用。在这种情况下,我不确定您为什么使用子查询。我认为您正在寻找这样的东西:

UPDATE MyTable
SET A = 
    CASE
        WHEN B - C >= A THEN A
        ELSE B - C
    END

此查询将更新表中每条记录的 A 列。如果B - C大于或等于A,则A的值将保持不变。否则,A 将设置为 B - C。我还会使用 ELSE 而不是两个 WHEN

关于sql-server - SQL 查询 - 我可以不这样做吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17662074/

相关文章:

php - 如何使用准备好的语句通过 PDO sqlsrv 设置获取和偏移值?

sql - 无法绑定(bind)多部分标识符

c# - 如何使用 ADO 在 C# 中获得高效的 Sql Server 死锁处理?

sql-server - 启动 Docker 容器时如何恢复 SQL Server 数据库?

c# - 多次使用相同变量的插入语句

sql - 在列上执行聚集索引保证返回根据该列排序的行

sql - 将间隔 1 天替换为 SQL Server 语法

java - Java 中的父类和子类应该有 2 个数据表吗?

c# - 为什么不在 finally block 中关闭数据库连接

sql - 在 SQL Server 中使用标识列为 INSERT 语句指定 "NEXT VALUE"