首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自更多表的MySQL连接/联合结果

问来自更多表的MySQL连接/联合结果
EN

Stack Overflow用户
提问于 2011-10-16 02:38:41
回答 1查看 315关注 0票数 0

我有一系列MySQL表,其中第一列是Unix时间格式的日期,第二列是每个表具有不同格式的一些数据。

我使用与此类似的查询按月对数据进行分组:

代码语言:javascript
复制
SELECT YEAR(FROM_UNIXTIME(date)) AS year, MONTH(FROM_UNIXTIME(date)) AS month, SUM(views) AS views,
FROM stats
GROUP BY year, month

我需要什么样的查询才能将所有这些“第二”列输出到按年和月分组的一行中?例如,每个返回的行都包含"year,month,views,column2,column3“……

我尝试过使用UNION,但是,因为“第二”列都不同,所以它为每个表返回一行。例如:

代码语言:javascript
复制
year1, month1, views, 0, 0...  
year1, month1, 0, column2, 0...  
year1, month1, 0, 0, column3...  
year2, month2, views, 0, 0...  
year2, month2, 0, column2, 0...  
year2, month2, 0, 0, column3...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-16 02:51:38

您必须执行类似于以下操作的操作:

代码语言:javascript
复制
SELECT MAX(views) as views,
    MAX(column2) as column2,
    MAX(column3) as column3
FROM (
    SELECT YEAR(FROM_UNIXTIME(date)) AS year, 
        MONTH(FROM_UNIXTIME(date)) AS month, 
        SUM(views) AS views,
        0 AS column2,
        0 AS column3
    FROM stats
    GROUP BY year, month
    UNION
    SELECT YEAR(FROM_UNIXTIME(date)) AS year, 
        MONTH(FROM_UNIXTIME(date)) AS month, 
        0 AS views,
        sum(column2) AS column2,
        0 AS column3
    FROM stats
    GROUP BY year, month
    UNION
    SELECT YEAR(FROM_UNIXTIME(date)) AS year, 
        MONTH(FROM_UNIXTIME(date)) AS month, 
        0 AS views,
        0 AS column2,
        sum(column3) AS column3
    FROM stats
    GROUP BY year, month
)
GROUP BY year, month;

由于每个select包含相同的列,因此您将能够聚合整个内容,并为每一行选择最大值。显然,如果您的数据不是数字或小于0,那么您必须替换一个不同的聚合函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7779864

复制
相关文章

相似问题

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