首页 > 解决方案 > 仅当 select 不返回 null 时才更新 SQL 记录

问题描述

我有一个客户及其父客户的 SQL 表,我需要在其中更新客户表以显示客户所有者(这是客户表中的另一个条目)。即客户可能以他们自己的权利存在,或者他们可能(可选地)在同一个表中有父记录。我试过使用 SQL 命令

Update 
  Customers
SET
  Customers.Owner = (SELECT TOP 1 Owner from Customers Customer where CustomerId = Customers.Parent)

但是如果没有父级,这会将所有者设置为 null。如果 Select 语句不返回 null,我如何只更新记录。我尝试添加一个 where 子句,但这似乎只作用于 select 子句,而不是它的结果。

标签: sqlselectsql-update

解决方案


你可以使用 EXIST:

Update 
  Customers
SET
  Customers.Owner = (SELECT TOP 1 Owner from Customers Customer 
                     where CustomerId = Customers.Parent)
WHERE EXIST (SELECT TOP 1 Owner from Customers Customer 
             where CustomerId = Customers.Parent)

推荐阅读