我有两个表,我想在这两个表连接在一起之前过滤这一个表。
客户表:
╔══════════╦═══════╗
║ 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上过滤的条目表。
谢谢你的帮助!!
或者...
SELECT c.Customer, c.State, e.Entry
FROM Customer c
LEFT JOIN Entry e
ON c.Customer=e.Customer
WHERE e.Category IS NULL or e.Category='D'
你也可以做:
SELECT c.Customer, c.State, e.Entry
FROM Customer AS c
LEFT JOIN (SELECT * FROM Entry WHERE Category='D') AS e
ON c.Customer=e.Customer
SQL小提琴
您需要将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摆弄演示
带hibernate的JSF应用程序 有没有一种方法可以使用联接来过滤条件列表返回的结果<我有两张桌子。订单和顾客。 我需要返回丢失电子邮件地址的客户的所有订单,以及所有order.billingCustomeId=null和CustomeId=nullorder.shipping订单。 客户可以在或上进行匹配。 我将使用的SQL Hibernate标准 这将返回billing/shipping
问题内容: 我有这些MySQL表: 表格1: 表2: 而这个查询: 此查询将返回table1的所有行,即1,2,3 我只想选择在左关节中找不到的行。所以它应该只返回ID为ID的行 我想要与INNER JOIN相反,它将仅选择在联接中找到的行。如何获得相反的结果(例如是否存在左联接),忽略它并移至下一行。希望我明白 问题答案: 您可以使用以下查询: 虽然,根据您的索引,您可能会发现两个联接的性能更好
我有这些MySQL表: 表1: 表2: 而这个查询: 此查询将返回table1中1,2,3的所有行 我只想选择在左关节中找不到的行。因此,它应该只返回id为 我想要一种与内部联接相反的方式,它将只选择联接中找到的行。如何获得相反的方式,比如如果存在左联接,忽略它并移动到下一行。希望我很清楚
当我添加一个左连接来获取外部表的计数时,它将我其他左连接表的总和值与计数相乘,我也不能在这里使用不同的总和,因为两个值可以是相同的:
我有一个springboot应用程序,它使用Keycloak处理JWT身份验证。如果我在controller方法上使用@PreAuthorize,一切都按预期工作,但是基于HttpSecurity的URL antMatcher模式却不是这样。据我所知,Spring在构建用户主体之前应用了安全过滤器。在日志中,我看到它对匿名进行测试,即使传递了有效的承载令牌,我也可以看到控制器方法中的Authent
另一个宽大处理--B: 这里要注意,实体A和B之间没有隐式关系,B表中的a_id是手工处理的,因此--关系类似于一对多(A-->B),但不是jpa-hibernate关系。而且,我的FullDto有A的所有属性和B的列表: 现在,我想从A的存储库接口中提取所有内容(A和B表一次完成),如下所示: