哪个MYSQL加入包括不存在的记录

时间:2013-04-13 12:50:01

标签: mysql sql database

我有一个数据库,我想查询与product_fields连接的产品中的所有记录。但是有可能在product_fields中没有关于颜色的记录,在这种情况下我仍然希望显示记录,只有字段颜色可以留空。 product_fields表包含同一产品的多个记录,并具有“名称”和“值”字段。

看到我提出的这句话:

SELECT p.*, c.value AS color
FROM products p
LEFT JOIN product_fields c ON c.product_id = products.id 
WHERE c.name = 'color'
AND products.id = '1'

令我惊讶的是,这不起作用,我必须留下明显的东西吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您需要将条件放在ON子句中,

SELECT p.*, c.value AS color
FROM   products p
       LEFT JOIN product_fields c 
            ON c.product_id = products.id AND 
               c.name = 'color'
WHERE  products.id = '1' 
LIMIT  1

ON子句和WHERE子句中添加条件的主要区别在于,在ON子句中,它在加入之前过滤掉指定表中的记录在另一个表上,WHERE子句在表加入后过滤掉记录。