sql - 仅当 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 子句,而不是它的结果。
解决方案
你可以使用 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)
推荐阅读
- c# - 如何更改 xamarin IOS Native 上的后退栏按钮标题
- java - jOOQ - 使用 refcursor 执行 postgres 用户定义的函数
- excel - 如何动态更改文件路径中的文件名?
- c# - UnityARKit 插件中的 UnityARAlignment 是什么意思?
- sockets - 你知道有什么好书或 pdf 来学习网络以及它是如何工作的吗?
- php - 更新两个表以生成发票和激活用户
- networking - 使用 DNS 域配置他的 Web 服务器
- java - java - 当密码在java中重置/更改时,如何使先前生成的JWT令牌无效
- mongodb - 在 GORM mongo 中缓存?
- python - 乘以 Python MaskedColumn