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

ETF*_*fax 10 sql sql-server subquery sql-update

我正在尝试使用条件子选择进行更新,该子选择可以返回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;
Run Code Online (Sandbox Code Playgroud)

如果"bTable = @someCriteria"子句导致没有从SELECT返回结果,它会尝试将NULL插入"aColumn",在本例中是一个NOT NULL列.

如何在这种情况下单独留下"aColumn"?

非常感谢.

gbn*_*gbn 8

...
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)
...
Run Code Online (Sandbox Code Playgroud)