我有两张桌子:
Article
-article_id
-name
-price
Attributes
-attribute_id
-article_id
-name
-value
我想从每篇文章中选择所有内容,如果名称为" color"存在,我也想要选择这个值。 所以示例结果如下:
Result_table
article_id; name; price; value
1; thing1; 24$;
2; thing2; 20$; red
3; thing3; 10$; blue
4; thing4; 19$;
答案 0 :(得分:1)
你需要LEFT JOIN。条件name = 'color'
必须在ON子句中。通过这种方式,您可以保留不具备“颜色”的文章。属性。
SELECT art.*, attr.value
FROM Article art
LEFT JOIN Attributes attr
ON attr.article_id = art.article_id
AND attr.name = 'color'
答案 1 :(得分:0)
试试这个:
SELECT article_id, price, value FROM Article
LEFT JOIN Attributes
ON Article.article_id = Attributes.article_id
LEFT JOIN
关键字返回左表(table1)中的所有记录,以及右表(table2)中的匹配记录。如果没有匹配,结果是NULL
来自右侧。
答案 2 :(得分:0)
您可以使用LEFT JOIN
进行IF
,例如:
SELECT a.article_id, a.name a.price, IF(att.name = 'color', att.value, '') AS value
FROM article a
LEFT JOIN attributes att ON a.article_id = att.article_id;