Wiz*_*ard 1 mysql sql left-join
我的查询看起来像:
SELECT * FROM users U LEFT JOIN posts P ON P.userId = U.id AND P.userId IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
为什么查询还返回的结果,其中userId是null?
我知道,对于我的需求,我只能使用它INNER JOIN来获取与用户相关的帖子,但是它很奇怪,可以LEFT JOIN支持多个条件,但不能用于NOT NULL条件。
这是因为“帖子”不包含空值,因此在该阶段无法对其进行过滤。当服务器在右表上找不到对应的行时,仅通过联接生成Null值。因此,只需将not null放在where子句中即可使用:
SELECT * FROM users U LEFT JOIN posts P ON P.userId = U.id WHERE userId IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
(编辑:尽管如此,您应该使用内部联接进行生产性工作,因为这是正确的方法,它将为您带来更大的性能。)
您还可以通过以下操作查看所有没有帖子的用户:
SELECT * FROM users U LEFT JOIN posts P ON P.userId = U.id WHERE userId IS NULL;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3425 次 |
| 最近记录: |