sql - 使用子选择更新 - 如何处理 NULL 值?

标签 sql sql-server sql-update subquery

我正在尝试使用可能返回 null 的条件子选择进行更新...

UPDATE 
aTable SET 
aColumn = 
(   
    SELECT TOP 1    
        CASE 
            WHEN bTable.someColumn = 1 THEN someValue1 
            WHEN bTable.someColumn = 2 THEN someValue2 
            ELSE someValue3
        END  
    FROM         
        bTable
    WHERE
        bTable = @someCriteria
    ORDER BY
        someSortColumn
) WHERE 
aTable.id = @someId;

如果“bTable = @someCriteria”子句导致 SELECT 没有返回结果,它会尝试将 NULL 插入“aColumn”,在本例中为 NOT NULL 列。

问题

在这种情况下,如何让它简单地保留“aColumn”?

非常感谢。

最佳答案

...
aColumn = 

    ISNULL(
        (   
            SELECT TOP 1    
                CASE 
                    WHEN bTable.someColumn = 1 THEN someValue1 
                    WHEN bTable.someColumn = 2 THEN someValue2 
                    ELSE someValue3
                END  
            FROM         
                bTable
            WHERE
                bTable = @someCriteria
            ORDER BY
                someSortColumn
        ), aColumn)
...

关于sql - 使用子选择更新 - 如何处理 NULL 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6384360/

相关文章:

sql-server - 子查询中的数据未被识别为数字?

sql - Derby 数据库 : sql update the results of a select statement

MYSQL 向列插入特定值

sql - 从同一 Azure SQL Server 上的其他数据库调用主数据库的函数

sql - Rails 没有此类列错误

sql - 我应该将 Users 和 Staff 存储在同一张表中吗?

php - MySQL 更新枚举

mysql - SQL CONCAT - 有趣的字符 - 但我没有笑

sql-server - 连接到 SQL Azure 很乏味

sql-server - SQL Server 替换功能