内部加入有两个条件,但只有一个存在

时间:2017-05-26 11:58:23

标签: mysql

SELECT oc_product.product_id, oc_product.quantity, oc_product.price, oc_product_description.name, oc_product_description.description
FROM oc_product
INNER JOIN oc_produsct_description ON oc_product.product_id = oc_product_description.product_id
WHERE oc_product.prodsuct_id = 1 AND oc_prodDuct_description.landuage_id = 5

在此查询中,存在oc_product_id = 1,但oc_product_description.language_id = 5不存在。

但是,如果语言5存在或不存在,我想获取id为1的产品的

2 个答案:

答案 0 :(得分:2)

您需要left join

SELECT p.product_id, p.quantity, p.price, pd.name, pd.description
FROM oc_product p LEFT JOIN
     oc_product_description pd
     ON p.product_id = pd.product_id AND pd.language_id = 5
WHERE p.product_id = 1;

注意:

  • language_id上的条件需要进入ON子句,否则外连接将转换为内连接。
  • 使用表别名,它们使查询更易于阅读和编写。

答案 1 :(得分:0)

您需要使用LEFT JOIN而不是INNER JOIN,如下所示:

SELECT oc_product.product_id, oc_product.quantity, oc_product.price, oc_product_description.name, oc_product_description.description
FROM oc_product
LEFT JOIN oc_product_description ON oc_product.product_id = oc_product_description.product_id
WHERE oc_product.product_id = 1 AND oc_product_description.landuage_id = 5