首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL group_concat和count

MySQL group_concat和count
EN

Stack Overflow用户
提问于 2014-04-11 08:21:16
回答 1查看 1.8K关注 0票数 4

我试图在一个查询中获取每个类别的各个方面,如下所示:

代码语言:javascript
复制
SELECT b.`id` AS parent_id, b.`name` AS parent_name, 
    a.`id` AS child_id, a.`name` AS child_name, a.`pageid` AS t_id, 
    COUNT( c.`id` ) AS deals_in_cat, 
    d.`aspect_values` AS aspects 
        FROM `category_parent` AS a 
        LEFT JOIN `navigation_filters_weightage` AS d ON a.`id` = d.`cat_id`, 
        `deals_parent_cat` AS b, 
        `deals` AS c 
    WHERE a.`parent_id` = b.`id` 
    AND c.`ebaydeals_category` = a.`id` 
        GROUP BY a.`id`, d.`frequency` 
        ORDER BY b.`order` ASC, a.`order` ASC, d.`frequency` DESC;

这个查询给出了以下结果:

正如您所看到的,类别的所有方面(在本例中是移动电话)都在一个单独的行中。我想要的是在一个行中获取所有类别的所有方面。因此,我尝试这个查询:

代码语言:javascript
复制
SELECT b.`id` AS parent_id, b.`name` AS parent_name, 
    a.`id` AS child_id, a.`name` AS child_name, a.`pageid` AS t_id, 
    COUNT( c.`id` ) AS deals_in_cat, 
    GROUP_CONCAT( DISTINCT d.`aspect_values` ORDER BY d.`frequency` DESC ) AS aspects 
        FROM `category_parent` AS a 
        LEFT JOIN `navigation_filters_weightage` AS d ON a.`id` = d.`cat_id`, 
        `deals_parent_cat` AS b, 
        `deals` AS c 
    WHERE a.`parent_id` = b.`id` 
    AND c.`ebaydeals_category` = a.`id` 
        GROUP BY a.`id` 
        ORDER BY b.`order` ASC , a.`order` ASC;

这就产生了以下结果:

正如你所看到的,移动电话的count已经增加了。手机只有271项,但第二次查询几乎将这个数字乘以no。这一类别的各个方面。

我不知道为什么会这样。任何想法都欢迎。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-11 08:27:19

deals中可能有重复的in尝试在计数函数中使用DISTINCT

代码语言:javascript
复制
SELECT b.id AS parent_id, 
    b.name AS parent_name, 
    a.id AS child_id,
    a.name AS child_name, 
    a.pageid AS t_id, 
    count(DISTINCT c.id ) AS deals_in_cat ...
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23007249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档