仅当select不返回null时更新SQL记录
我有一个客户及其父客户的SQL表,需要更新客户表以显示客户所有者(这是客户表中的另一个条目)。i、 e客户可以自己存在,也可以(可选)在同一个表中有父记录。我尝试过使用SQL命令仅当select不返回null时更新SQL记录,sql,select,sql-update,Sql,Select,Sql Update,我有一个客户及其父客户的SQL表,需要更新客户表以显示客户所有者(这是客户表中的另一个条目)。i、 e客户可以自己存在,也可以(可选)在同一个表中有父记录。我尝试过使用SQL命令 Update Customers SET Customers.Owner = (SELECT TOP 1 Owner from Customers Customer where CustomerId = Customers.Parent) 但如果没有父对象,则会将所有者设置为null。如何仅在Select语
Update
Customers
SET
Customers.Owner = (SELECT TOP 1 Owner from Customers Customer where CustomerId = Customers.Parent)
但如果没有父对象,则会将所有者设置为null。如何仅在Select语句不返回null时更新记录。我尝试添加where子句,但这似乎只作用于select子句,而不作用于其结果。您可以使用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)
您可以使用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)
您也可以使用
MERGE
语句
MERGE INTO Customers tgt
USING Customers src
ON (src.CustomerId = tgt.Parent)
WHEN MATCHED THEN
UPDATE tgt.Owner = src.Owner;
您也可以使用
MERGE
语句
MERGE INTO Customers tgt
USING Customers src
ON (src.CustomerId = tgt.Parent)
WHEN MATCHED THEN
UPDATE tgt.Owner = src.Owner;
TOP 1
在EXISTS
中不需要,但无论如何都会工作。TOP 1
在EXISTS
中不需要,但无论如何都会工作。完美-正是我想要的。谢谢。太好了——正是我想要的。谢谢