我有两个表通过一个左连接连接.我想包括Borrowers表中的所有记录,但只包括Loans表中Loan_Type = 'Auto'处的记录.

以下是SQL Fiddle示例中的所有代码:

SQLFiddle

These are my desired results

推荐答案

不要在WHERE子句中指定条件,而只需将条件添加到join中:

重写这个:

LEFT JOIN Loans l ON b.Loan_ID = l.Loan_ID
WHERE l.loan_type = 'Auto'

对此:

LEFT JOIN Loans l ON b.Loan_ID = l.Loan_ID AND l.loan_type = 'Auto'

WHERE从结果集中过滤整行,而连接中的附加条件只过滤连接的那一部分.

Sql相关问答推荐

创建每小时重置的序列号

如何连接第二个表并将其内容输入到第一个表的单个字段中?

SQL查询视图与连接?

如何根据特定的内部json元素值过滤postgres查询结果?

当交叉联接3个或更多表时,实体框架中是否会传输冗余的行数据并占用数据库带宽?

如何设计一个调用嵌套函数并仅在所有被调用的嵌套函数都提交时才提交的事务,例如,如果一个子函数失败则中止?

属于(日期)范围类型及其交集的总权重​

如何解决错误;ORA-00911:无效字符;在果朗?

如何使用SQL生成数据的滚动3天总和

其中使用表名作为;行值;记录?

使用 union 的有序结果获取行数

在 SQL Server 中查找重复项

如何查询自引用 comments 表以查找带有回复的 comments ,并按最新回复排序?

Postgresql 具有相似行为和模式行为的问题

如何将输出转换为二维格式?

获取 SQL Server 中每一行的两个-之间的文本

使用SQL中另一个表的查询结果在表中查找记录

PostgresQL-根据另一列找到 3 个最低值

ACCESS SQL - 有没有办法使用通配符仅 Select 字段的特定部分?

使用 json_agg 从 SQL 查询获取 [null] 响应