mysql - LEFT OUTER JOIN 与第二张表上的 WHERE 子句,不影响第一张表
问题描述
我正在尝试从两个表中返回一组记录。我正在使用LEFT OUTER JOIN
,因为我想要表 1 中的所有数据。JOINED
如果满足某个子句,我只想要表 2 中的数据。
LEFT OUTER JOIN
如果表 2 中的记录不符合该子句,则该子句似乎覆盖并且不返回表 1 中的记录WHERE
。
SELECT p.code, p.name, d.product_code, d.detail_type, d.description
FROM products p
LEFT OUTER JOIN product_details d
ON p.code = d.product_code
WHERE product_details.detail_type = 'ALTERNATIVE NAMES'
我希望返回产品中的所有行,但我只希望product_details
在以下情况下加入行product_details.detail_type = 'ALTERNATIVE NAMES'
我正在寻找一些关于这是否可能的指导,或者我是否应该在初始之后去除不需要的数据JOIN
?
解决方案
使用product_details.detail_type = 'ALTERNATIVE NAMES'
条件ON Clause
代替where Clause
SELECT products.code, products.name, product_details.product_code, product_details.detail_type, product_details.description
FROM products
LEFT OUTER JOIN product_details
ON products.code = product_details.product_code
and product_details.detail_type = 'ALTERNATIVE NAMES'
推荐阅读
- go - 无法将 k8s env ValueFrom 字段的值绑定到用 yaml 传递的结构
- javascript - 当我只想要 typeorm 模型中的一些键时返回所有键
- javascript - 特殊数组:如果每个偶数索引包含一个偶数并且每个奇数索引包含一个奇数,则该数组是特殊的
- kubernetes - 为在 Kubernetes 集群的不同命名空间中运行的所有 Solr 状态集实例设置单个 Solr 导出器
- django - Django - 迁移表内的数据以顺利发布
- c++11 - std::move 的效果
- angular - AOS 仅适用于第一个元素(Angular)
- java - 将项目从 java 8 迁移到 Java11,获取错误包 org.w3c.dom 可以从 org.w3c.dom.Document 的多个模块访问
- javascript - 反应状态不更新
- amazon-web-services - AWS Stickyness Cookie Expiration Date 与 AWS 控制台上设置的不匹配