gpt4 book ai didi

sql - 应用左连接之前过滤表

转载 作者:行者123 更新时间:2023-12-03 05:37:08 25 4
gpt4 key购买 nike

我有 2 个表,我想将 2 个表连接在一起之前过滤 1 个表。

客户表:

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

条目表:

   ╔══════════╦═══════╦══════════╗
║ Customer ║ Entry ║ Category ║
╠══════════╬═══════╬══════════╣
║ A ║ 5575 ║ D ║
║ A ║ 6532 ║ C ║
║ A ║ 3215 ║ D ║
║ A ║ 5645 ║ M ║
║ B ║ 3331 ║ A ║
║ B ║ 4445 ║ D ║
╚══════════╩═══════╩══════════╝

我想要左连接,这样我就可以从客户表中获取所有记录,无论条目表中是否有相关记录。不过,我想在连接之前过滤条目表中的类别 D。

期望的结果:

   ╔══════════╦═══════╦═══════╗
║ Customer ║ State ║ Entry ║
╠══════════╬═══════╬═══════╣
║ A ║ S ║ 5575 ║
║ A ║ S ║ 3215 ║
║ B ║ V ║ 4445 ║
║ C ║ L ║ NULL ║
╚══════════╩═══════╩═══════╝

如果我要执行以下查询:

   SELECT Customer.Customer, Customer.State, Entry.Entry
FROM Customer
LEFT JOIN Entry
ON Customer.Customer=Entry.Customer
WHERE Entry.Category='D'

这将过滤掉最后一条记录。

所以我想要左表中的所有行并将其连接到按类别 D 过滤的条目表。

感谢提前提供的任何帮助!!

最佳答案

您需要将 WHERE 过滤器移至 JOIN 条件:

SELECT c.Customer, c.State, e.Entry
FROM Customer c
LEFT JOIN Entry e
ON c.Customer=e.Customer
AND e.Category='D'

参见SQL Fiddle with Demo

关于sql - 应用左连接之前过滤表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15077053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com