Update with sub select - How to handle NULL values? Update with sub select - How to handle NULL values? sql sql

Update with sub select - How to handle NULL values?


...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)...


UPDATE A SET aColumn = B.Value FROM aTable AS A  CROSS JOIN              (                   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            ) AS B(Value)WHERE              A.id = @someId;

Difference between my answer and answer by gbn is that here column aColumn is not modified. I think that the isnull(..., aColumn) actually updates the value so if you have an update trigger it will fire.


UPDATE aTableSET aColumn = s.ValueFROM (       SELECT TOP 1            CASE             WHEN bTable.someColumn = 1 THEN someValue1             WHEN bTable.someColumn = 2 THEN someValue2             ELSE someValue3        END AS Value    FROM                 bTable    WHERE        bTable = @someCriteria    ORDER BY        someSortColumn) sWHERE aTable.id = @someId  AND s.Value IS NOT NULL;