如果select返回null,则使用默认值插入

Sim*_*ker 2 sql sql-server

我有一个非空字段的表,我希望从另一个表填充.麻烦是查询到其他表可能会返回null.当查询返回null时,如何获取值(0将执行)?我的查询是:

update Packages
    set PackageTypeId = (SELECT TOP 1 PackageTypeId
                         FROM PackageTypes
                         WHERE Packages.PackageTypeName = PackageTypes.Name
                         ORDER BY PackageTypeId ASC)
Run Code Online (Sandbox Code Playgroud)

我尝试使用coalesce,但它仍然失败:

update Packages
     set PackageTypeId = (SELECT TOP 1 coalesce(PackageTypeId, 0) as id
                          FROM PackageTypes
                          WHERE Packages.PackageTypeName = PackageTypes.Name
                          ORDER BY PackageTypeId ASC)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Mit*_*eat 6

update Packages 
set PackageTypeId = coalesce((SELECT TOP 1 PackageTypeId FROM PackageTypes 
                              WHERE Packages.PackageTypeName = PackageTypes.Name 
                              ORDER BY PackageTypeId ASC), 0)
Run Code Online (Sandbox Code Playgroud)