zoukankan      html  css  js  c++  java
  • mysql将多张表COUNT的数据相加

    由于数据量过大,我们将根据用户id 将数据存储在不同的表中,根据用户id模10的余数作为表的后缀。
    有如下十张表:test_0, test_1, ... ,test_9
    现在需要根据某个条件查询统计数据
    我们可以使用到union all
    注:union all 与 union的区别
    效率上,union all比union更好一点.因为union在执行的时候会把结果集进行排序并删除重复的记录,而union all则会把两个结果集原封不动地合并在一起
    摘自:http://brilon.iteye.com/blog/432313
    SELECT COUNT(id) FROM test_0 WHERE field1 = 1
    UNION ALL
    SELECT COUNT(id) FROM test_1 WHERE field1 = 1
    .
    .
    .
    UNION ALL
    SELECT COUNT(id) FROM test9 WHERE field1 = 1
    现在需要把它们汇总加起来,可以使用如下方法实现
    SELECT COUNT(cnt) FROM (
    SELECT COUNT(id) AS cnt FROM test_0 WHERE field1 = 1
    UNION ALL
    SELECT COUNT(id) AS cnt FROM test_1 WHERE field1 = 1
    .
    .
    .
    UNION ALL
    SELECT COUNT(id) AS cnt FROM test9 WHERE field1 = 1
    AS countdata

    注:为UNION ALL的所有表做一个别名是必须的,虽然这个别名并没有什么意义
    但如果没有的话mysql会报出错误:Every derived table must have its own alias

  • 相关阅读:
    Sqlite EF6注册
    C# 等值锁定
    net 4.0+EF6+Sqlite 使用,安装,打包
    C#调用C++函数
    C# 调用.exe文件
    Java继承
    python多线程与threading模块
    Java对象构造
    python多线程与_thread模块
    Linux文件压缩与打包
  • 原文地址:https://www.cnblogs.com/flish/p/5666629.html
Copyright © 2011-2022 走看看