mysql - SQL GROUP_CONCAT 与多个相关行的 LEFT JOIN

标签 mysql sql

我已经在这个问题上坚持了几个小时了,任何帮助将不胜感激

我有两个表“products”和“product_subcategorys”

“products”仅包含唯一的 ID,而“product_subcategorys”则包含与“products”表相关的多个 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

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

我希望查询返回品牌“a”两次,但此查询返回 3 次,因为“product_subcategorys”中有两个匹配的 ID

最佳答案

这符合你的要求吗?

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')
             );

关于mysql - SQL GROUP_CONCAT 与多个相关行的 LEFT JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36779617/

相关文章:

php - 将 SQL 查询的值存储在变量中

sql - 生成按订单总数分组的订单统计信息

sql - 如何在 PostgreSQL 中生成一系列重复数字?

php - 单击保存按钮时如何保存在多个表中?

php - 我想在登录时显示欢迎用户名的消息

php - PHP/MySQL/jQuery 中的字符编码问题

MySQL Case When 语句

mysql - 在派生表和日历表上应用右联接以获取两天之间的所有日期

mysql - 减去 2 个 SQL 查询的输出

PHP 脚本仅将 5000 行插入 phpMyAdmin 数据库