我正在尝试使用可能返回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/

10-10 03:21