sql - LEFT JOIN 从左表中获取所有行,而不考虑连接条件
问题描述
我正在尝试进行左连接,以便我从左表中获取所有行,即使这些行的连接条件不正确。
示例:下面的 Aid = Bid 但表 B 只有 3 个 id
我正在使用的查询仅给出连接条件为真的行。即使联接条件不成立,有没有办法从左表中获取所有行?
我的查询:
SELECT Table1.Aid,
Table2.Bid,
Table2.Issueid
FROM Table1
LEFT JOIN Table2 ON Table1.Aid = Table2.Bid;
WHERE Table2.Issueid IN (
'a',
'b'
)
解决方案
将您的移动WHERE
到您的ON
(加入谓词):
SELECT Table1.Aid, Table2.Bid, Table2.IssueId
FROM Table1 LEFT JOIN Table2
ON Table1.Aid = Table2.Bid
AND Table2.IssueId IN ('a','b');
WHERE
在右侧表格上过滤的A基本上使您LEFT JOIN
成为INNER JOIN
. 它过滤掉NULL
行。
请记住,这现在将返回NULL
该Table2.Bid = 3
行,因为它不满足Table2.IssueId IN ('a','b')
条件。
推荐阅读
- oracle - 如何在 Oracle 中将日期字符串“09-JUN-14 12.00.00.000000000 AM”转换为日期格式
- laravel - 文件上传功能在laravel API中返回异常
- swift - 当我在函数中的返回值是可选的时,我是否必须声明“return nil”语句?
- python - Python 消耗了我所有的 RAM 和系统挂起
- react-native - Wix React Native Navigator UnhandledPromiseRejectionWarning: Error: File not found when build with IOS when I edit AppDelegate.m
- mongodb - Mongodb查询字段的子字符串
- wso2 - 更改主机名和证书后,我无法登录 wso2 发布者
- python - pytest 失败:找不到请求的 URL
- python - 将 Mathematica 代码转换为 Python
- c# - C# DataGrid 过滤器从字符串错误转换日期和/或时间