SQL GROUP_CONCAT,LEFT JOIN到多个相对行

时间:2016-04-21 20:17:51

标签: mysql sql

我已经被困在这几个小时了,任何帮助将不胜感激

我有两张桌子'产品'和' product_subcategorys'

'产品'仅保留唯一的ID,其中" product_subcategorys'拥有与产品相关的多个ID'表

'products'
id   brand
1    a
2    b
3    a

'product_subcategorys'
id   subcat
1    u
1    i
2    u
3    u

这是我的查询,分组依据' p.id'似乎不起作用

SELECT GROUP_CONCAT(p.brand)
FROM products p
LEFT JOIN product_subcategorys s ON p.id = s.id
WHERE (
        s.subcategory = "u"
        OR s.subcategory = "i"
        ) AS GROUPbrand

所以我的问题是,我希望它只返回“'产品”中的品牌列表。表我不能使用distinct,因为我需要计算倍数

我希望查询返回品牌' a'两次,但此查询返回3次,因为" product_subcategorys'

中有两个匹配的ID

1 个答案:

答案 0 :(得分:1)

这样做你想要的吗?

SELECT GROUP_CONCAT(p.brand ORDER BY p.id)
FROM products p
WHERE EXISTS (SELECT 1
              FROM product_subcategorys s 
              WHERE p.id = s.id AND
                    s.subcategory IN ('u', 'i')
             );