由于数据量过大,我们将根据用户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

相关文章:

  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-06
  • 2022-12-23
  • 2021-07-25
猜你喜欢
  • 2021-10-26
  • 2021-11-20
  • 2022-03-06
  • 2021-11-08
  • 2021-10-15
  • 2022-12-23
相关资源
相似解决方案