【发布时间】:2021-09-27 01:08:34
【问题描述】:
我有 SQL 脚本
这里是代码
UPDATE Companies
LEFT JOIN abpusers a on a.CompanyId = companies.Id AND a.TenantId IS NOT NULL
SET Companies.TenantId = a.TenantId
WHERE Companies.TenantId = 3;
问题在于我尝试运行它并得到一个错误
[23000][1048] 列 'TenantId' 不能为空
但我有条件AND a.TenantId IS NOT NULL 必须过滤它
我的问题在哪里?
【问题讨论】:
-
您需要一个
INNER JOIN,或者将您的过滤器移动到 where 子句,而不是连接条件。由于您已将a.TenantId IS NOT NULL放在联接子句中,因此您将从联接的左侧删除这些行,并且不会完全从更新中过滤这些行