如果存在,mysql选择一些东西

时间:2017-08-03 22:31:58

标签: mysql join exists

我有两张桌子:

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$;

3 个答案:

答案 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;