我有两张桌子,像这样(简化):
我在出口数据中有一些产品的数据。我想要所有的产品,在出口数据与货架份额百分比,我也想要的产品,而不是在出口数据。我实现了左外部连接,但它只返回出口数据中的产品。我的查询如下:
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'我怎样才能得到所有匹配和无与伦比的产品?
发布于 2018-03-15 06:51:25
只需将cp_outlet_data上的所有条件从WHERE子句移到ON子句:
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子句中,所有记录仍将被保留。
https://stackoverflow.com/questions/49293110
复制相似问题