首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回mysql中所有匹配的和不匹配的值。

返回mysql中所有匹配的和不匹配的值。
EN

Stack Overflow用户
提问于 2018-03-15 06:46:24
回答 1查看 169关注 0票数 1

我有两张桌子,像这样(简化):

  1. 列id和标题的产品
  2. 列id、产品id和货架份额百分比的出口数据

我在出口数据中有一些产品的数据。我想要所有的产品,在出口数据与货架份额百分比,我也想要的产品,而不是在出口数据。我实现了左外部连接,但它只返回出口数据中的产品。我的查询如下:

代码语言:javascript
运行
复制
SELECT a.title, b.shelf_share_percentage
                    FROM cp_product a
                    LEFT OUTER JOIN cp_outlet_data b
                    ON a.id = b.product_id 
                    WHERE b.plan_id='9d9184ff-b848-4515-97a2-cea63caddd67'
                    AND b.visit_id='1586bfd3-8a1b-4f3a-bbc7-eaf61774bb50'    
                    AND b.town_id='414'
                    AND b.category_id='6'
                    AND b.shelf_share_id='3'
                    AND b.outlet_id='0331d624-6fcf-4ac9-8a73-3b60882c5136'

我怎样才能得到所有匹配和无与伦比的产品?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-15 06:51:25

只需将cp_outlet_data上的所有条件从WHERE子句移到ON子句:

代码语言:javascript
运行
复制
SELECT
    a.title,
    b.shelf_share_percentage
FROM cp_product a
LEFT JOIN cp_outlet_data b
    ON a.id = b.product_id AND
       b.plan_id = '9d9184ff-b848-4515-97a2-cea63caddd67'  AND
       b.visit_id = '1586bfd3-8a1b-4f3a-bbc7-eaf61774bb50' AND
       b.town_id = 414                                     AND
       b.shelf_share_id = 3                                AND
       b.outlet_id = '0331d624-6fcf-4ac9-8a73-3b60882c5136'
WHERE
    b.category_id = 6;

当前查询中发生的情况是,虽然左联接最初包含来自cp_product的所有记录,即使它们不匹配,但后续的WHERE子句正在删除某些记录。通过将WHERE逻辑添加到ON子句中,所有记录仍将被保留。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49293110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档