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

标签 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)

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

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

有什么想法吗?

最佳答案

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

关于sql - 如果 select 返回 null,则使用默认值插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29643550/

相关文章:

mysql - 在 SQL 表中添加特定字段

php - 我从数据库获取数据并在另一个查询中重用它们。重新准备它们是否多余?

sql - 经典 SQL Server 操作

c# - 尝试将 ADO.Net 实体数据模型添加到项目时出错

python - 将点插入到 SQL Server 中?

sql - 使用 SQL Server 根据系统日期和出生日期计算年龄

mysql - 每个唯一列值获取一条记录

sql - 恢复数据库 — 错误 RESTORE HEADERONLY 异常终止。

sql - TSQL "FOR BROWSE"选项的用途是什么?

带有两个表的 SQL 递归 CTE