mysql - 无法过滤 LEFT JOIN 上的行
问题描述
我有 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
必须过滤它
我的问题在哪里?
解决方案
由于您使用了 LEFT JOIN,因此某些公司行将没有匹配的 abpuser,这将导致 NULL。
您可以通过在同一个连接上执行 SELECT 并查看结果来查看它,而不是更新。
推荐阅读
- javascript - Vue 关注点分离导致无法挂载组件:模板或渲染函数未定义
- flutter - 如何从响应中保存数据?
- unicode - 如何创建划掉的©符号?
- kotlin - Koin: Single(override = true) {} 的解决方法
- ios - 颤动的Xcode问题
- android - Android 渲染线程奇怪的行为:启动时间
- apache-nifi - 在 Nifi 中,系统 JSON 或 Avro 哪个更轻?
- mysql - MySQL - 分组和数据透视表
- node.js - 某些 Express.Router() 路由不执行中间件功能
- android - Android 片段替换