【问题标题】:Multiple queries into one query多个查询合并为一个查询
【发布时间】:2016-02-05 16:49:35
【问题描述】:

我正在尝试将多个查询合并为一个。有人有什么想法吗?

SELECT In_year, count(In_year) AS Num_Of_Year 来自实习 GROUP BY In_year;

SELECT In_qtr, count(In_qtr) AS Num_Of_Qtr 来自实习 按季度分组;

SELECT In_location, count(In_location) AS Num_Of_Location 来自实习 GROUP BY In_location;

如果我自己运行每个查询,我会在结果中得到我想要的。我的问题是我无法弄清楚如何将这 3 个查询组合成 1 个,我试图将它们组合起来,但最终得到了错误的输出。谢谢!

【问题讨论】:

    标签: mysql sql subquery


    【解决方案1】:

    也许 UNION 子句并稍微组织一下就可以解决问题:

    SELECT 'Year' As Topic, In_year As Value, count(In_year) AS Count 
    FROM INTERNSHIP 
    GROUP BY In_year
    
    UNION ALL
    
    SELECT 'Qtr' As Topic, In_qtr As Value, count(In_qtr) AS Count 
    FROM INTERNSHIP 
    GROUP BY In_Qtr
    
    UNION ALL
    
    SELECT 'Location' As Topic, In_location As Value, count(In_location) AS Count
    FROM INTERNSHIP 
    GROUP BY In_location;
    

    这是在单个查询中显示它的唯一方法,因为三个 SELECT 将具有不同的行数,因此您不能以自然形式添加列。

    【讨论】:

    • 谢谢!我最了解你的回答。
    【解决方案2】:

    我们可以使用 INTERNSHIP 表作为驱动列表来连接其他“group by”SQL:

    select
       t1.In_year, y.Num_Of_Year,
       t1.In_qtr, q.Num_Of_Qtr,
       t1.In_location, l.Num_Of_Location
    FROM
      (select distinct In_year, In_qtr, In_location from INTERNSHIP)  t1
       join (SELECT In_year, count(In_year) AS Num_Of_Year FROM INTERNSHIP GROUP BY In_year) y on t1.In_year = y.In_year
       join (SELECT In_qtr, count(In_qtr) AS Num_Of_Qtr FROM INTERNSHIP GROUP BY In_Qtr) q on t1.In_Qtr = q.In_Qtr
       join (SELECT In_location, count(In_location) AS Num_Of_Location FROM INTERNSHIP GROUP BY In_location) l on t1.In_location = l.In_location
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多