首页 > 数据库 > mysql教程 > 如何在 SQL 中对预过滤表执行左连接?

如何在 SQL 中对预过滤表执行左连接?

Susan Sarandon
发布: 2025-01-14 13:31:46
原创
743 人浏览过

How to Perform a Left Join with a Pre-Filtered Table in SQL?

高效执行SQL左连接,预先筛选表数据

在处理多个表时,通常需要在连接表之前先对其中一个表进行筛选。本例涉及两个表:客户表 (Customer) 和条目表 (Entry)。

目标是在执行这两个表之间的左连接之前,先根据特定类别 'D' 筛选条目表。预期结果是:无论条目表中是否存在相关记录,都检索客户表中的所有记录;同时,排除条目表中不符合类别条件的记录。

以下SQL查询演示了如何实现这一点:

<code class="language-sql">SELECT c.Customer, c.State, e.Entry
FROM Customer c
LEFT JOIN Entry e
   ON c.Customer=e.Customer
   AND e.Category='D'</code>
登录后复制

通过将WHERE筛选条件移至JOIN条件中,我们可以在连接之前对条目表应用类别筛选。这确保只有符合类别条件的条目记录包含在连接结果中。

示例表

<code>客户表 (Customer):

╔══════════╦═══════╗
║ Customer ║ State ║
╠══════════╬═══════╣
║ A        ║ S     ║
║ B        ║ V     ║
║ C        ║ L     ║
╚══════════╩═══════╝

条目表 (Entry):

╔══════════╦═══════╦══════════╗
║ Customer ║ Entry ║ Category ║
╠══════════╬═══════╬══════════╣
║ A        ║  5575 ║ D        ║
║ A        ║  6532 ║ C        ║
║ A        ║  3215 ║ D        ║
║ A        ║  5645 ║ M        ║
║ B        ║  3331 ║ A        ║
║ B        ║  4445 ║ D        ║
╚══════════╩═══════╩══════════╝</code>
登录后复制

结果

<code>╔══════════╦═══════╦═══════╗
║ Customer ║ State ║ Entry ║
╠══════════╬═══════╬═══════╣
║ A        ║ S     ║  5575 ║
║ A        ║ S     ║  3215 ║
║ B        ║ V     ║  4445 ║
║ C        ║ L     ║  NULL ║
╚══════════╩═══════╩═══════╝</code>
登录后复制

总之,通过在JOIN条件中使用AND子句,我们可以在连接表之前对其进行筛选,从而根据指定的条件更精确地检索数据。

以上是如何在 SQL 中对预过滤表执行左连接?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板