繁体   English   中英

MySQL按多列分组问题

[英]MySQL group by multiple columns issue

下面的查询将每个用户的临时概述数据收集到内存表中。 基本上,用户可以按关键字查看项目数。

问题是,它通过keyword_id计算项目总数。

我需要的是,计算item_count双方keyword_iditem_typeItemtype )。

 SELECT
        `Item`.`user_id` AS `user_id` ,
        `ItemKeyword`.`keywordID` AS `keyword_id` ,
        `Keyword`.`title` AS `keyword_title`,
        count(`ItemKeyword`.`ItemID`) AS `ico_count`
    FROM
        (
            (
                `ItemKeyword`
                JOIN `Item` ON(
                    (
                        `Item`.`id` = `ItemKeyword`.`ItemID`
                    )
                )
            )
            JOIN `Keyword` ON(
                (
                    `Keyword`.`id` = `ItemKeyword`.`keywordID`
                )
            )
        )
    GROUP BY
        `Item`.`user_id` ,
        `ItemKeyword`.`keywordID`;

细节

例如,现在结果如下所示

在此处输入图片说明

基本上, item_count是所有item_type的总数。 我需要的是,将以下结果分开

user_id   keyword_id  keyword_title   item_count
1         9645         surveillance    20

变成这样的东西:

user_id   keyword_id  keyword_title   item_count item_type
1         9645         surveillance    18           1
1         9645         surveillance    2            2

其中, item_countkeyword_iditem_type两者计算。

我不知道如何在此查询中也包含item_type

有什么建议么?

我不明白您对方括号(括号)的热爱。 为什么那么多? 我认为您会失去可读性。 这只是一个旁注。

如果需要额外的分组级别,则需要修改查询,如下所示:

SELECT
    `Item`.`user_id` AS `user_id` ,
    `ItemKeyword`.`keywordID` AS `keyword_id` ,
    `Keyword`.`title` AS `keyword_title`,
    count(`ItemKeyword`.`ItemID`) AS `ico_count`,
    `Item`.`type` AS `item_type` 
FROM `ItemKeyword` JOIN `Item` ON
     `Item`.`id` = `ItemKeyword`.`ItemID`
  JOIN `Keyword` ON
     `Keyword`.`id` = `ItemKeyword`.`keywordID`
GROUP BY
    `Item`.`user_id` ,
    `Item`.`type` ,
    `ItemKeyword`.`keywordID`,
    `Keyword`.`title`;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM