当前位置 博文首页 > 德仔:[MSSQL]将查询结果赋值给变量时使用set与select的区别

    德仔:[MSSQL]将查询结果赋值给变量时使用set与select的区别

    作者:[db:作者] 时间:2021-09-12 12:04

    /****************** 场景布置 ******************/
    DROP TABLE #
    CREATE TABLE #(OrderId INT)
    INSERT #(OrderId) VALUES(1)
    INSERT #(OrderId) VALUES(2)
    
    
    /****************** 角色上场 ******************/
    -----角色1:
    DECLARE @id INT 
    SET @id=100
    SET @id=(SELECT ISNULL(OrderId,0) FROM # WHERE OrderId=1000000000)
    SELECT @id
    --结果为NULL, 因为不存在OrderId为1000000000的单号,所以为NULL
    
    -----角色2:
    DECLARE @id INT 
    SET @id=100
    SELECT @id=ISNULL(OrderId,0) FROM # WHERE OrderId=1000000000
    SELECT @id
    --结果为100, 因为不存在OrderId为1000000000的单号,所以执行SELECT @id=...未能给@id赋值
    
    -----角色3:
    DECLARE @id INT 
    SET @id=100
    SELECT @id=OrderId FROM #-- ORDER BY OrderId DESC
    SELECT @id
    --结果为2, 执行SELECT @id=...将返回结果的最后一个值给@id

    cs