【问题标题】:get count from multiple tables从多个表中获取计数
【发布时间】:2020-06-04 05:10:12
【问题描述】:

我有 3 个表,它们有一个共同的 'type_id' 列。它是来自 Table_type 的外键

Table_1 id、type_id、日期... Table_2 id、type_id、日期... Table_3 id、type_id、日期...

Table_Type id、type_name、描述

select type_id, count(*) from Table_1 GROUP BY type_id

给出单个表的计数。

我想知道特定类型使用了多少次。

type_id,计数(来自 3 个表) 1 , 10 2 , 5 3. , 3

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    使用union allgroup by

    select type_id, count(*)
    from ((select type_id from table_1) union all
          (select type_id from table_2) union all
          (select type_id from table_3)
         ) t
    group by type_id
    

    【讨论】:

    • 这为我节省了一些打字时间! :-)
    【解决方案2】:

    从每个表中获取计数,将这些查询与UNION 结合起来,然后将计数相加。

    SELECT type_id, SUM(count)
    FROM (
        SELECT type_id, COUNT(*) AS count
        FROM table_1
        UNION ALL
        SELECT type_id, COUNT(*) AS count
        FROM table_2
        UNION ALL
        SELECT type_id, COUNT(*) AS count
        FROM table_3
    ) AS x
    GROUP BY type_id
    

    如果type_id 列上有索引,则此查询应该能够利用它们。 UNION 处理较小的表,因为它在分组后合并。

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 2015-11-23
      • 2016-06-24
      • 2017-03-22
      • 2018-03-31
      • 1970-01-01
      相关资源
      最近更新 更多