【问题标题】:Getting the total records in multiple tables as a view table (mysql)获取多个表中的总记录作为视图表(mysql)
【发布时间】:2016-09-19 10:04:33
【问题描述】:

有没有办法获取每个表中的总记录,然后将其放入视图表中。我当前的查询是

CREATE VIEW view_summary AS
SELECT COUNT(*) as total_records FROM users WHERE role_id = 2
UNION ALL
(SELECT COUNT(*) FROM users WHERE role_id = 1) 
UNION ALL
(SELECT COUNT(*) FROM problems) 

输出是

total_records
1
2
1

此查询的问题我无法添加另一列来指定一行中的每个总记录。我的目标输出是

table_name | total_records
clients    | 1
admins     | 2
problems   | 1

谢谢

【问题讨论】:

    标签: mysql


    【解决方案1】:

    将另一列添加为table name

    CREATE VIEW view_summary AS
    SELECT 'cleints' AS table_name,COUNT(*) as total_records FROM users WHERE role_id = 2
    UNION ALL
    (SELECT 'admins',COUNT(*) FROM users WHERE role_id = 1) 
    UNION ALL
    (SELECT 'problems',COUNT(*) FROM problems) 
    

    【讨论】:

      【解决方案2】:

      除了增加一个额外的列,你可以将前两个选择合并为 1 :

      CREATE VIEW view_summary AS
      (SELECT CASE WHEN role_id = 2 THEN 'clients' ELSE 'admins' END as table_name,
             COUNT(*) as total_records FROM users WHERE role_id in (1,2)
      GROUP BY CASE WHEN role_id = 2 THEN 'clients' ELSE 'admins' END
      
      UNION ALL
      
      SELECT 'problems',COUNT(*) FROM problems)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-04
        • 2015-10-14
        • 1970-01-01
        • 1970-01-01
        • 2019-05-17
        • 2014-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多