2012-01-05 57 views
1

我需要从类别+子类别+子类别中获取文件的总数如何在mysql中取两个不同查询结果的总数?

为此,我使用我的视图编写了这种类型的查询。

select ((select count(*) from view_category where 1=1)+ (select count(*) from view sub category where 1=1) + (select count(*) from view subsub category where 1=1)) as cnt 

它的返回计数值。但我想知道任何其他更好的方法可用于获得相同的结果。

我试过这种方式,但它不工作(How to SUM() multiple subquery rows in MySQL?

select sum(int_val) from((select count(*) from view_category where 1=1) as int_val union (select count(*) from view sub category where 1=1) as int_val union (select count(*) from view subsub category where 1=1) as int_val)

回答

0

这只是凭直觉为我工作

select count(*) from(
(select count(*) from view_category where 1=1) union (select count(*) from view sub category where 1=1) union (select count(*) from view subsub category where 1=1)) AS int_val; 
0

如果表格具有相似的结构,您可以使用UNION统一结果,然后执行一个COUNT(*)

+0

,我会说总结3'COUNT'查询会比服用'UNION'的'COUNT'更快。 – Amadan 2012-01-05 11:28:21

+0

是的,我知道。但其三种观点。我不想加入这些意见 – learner 2012-01-05 13:15:14

1

你不需要做一个结合,并且可以只各有其自身从名称...只要每个查询返回只有一排,你可以做各种疯狂的事情。通过忽略任何“加入”的情况,你会得到一个笛卡尔结果,而是一个笛卡尔1:1:1将导致只有1个记录

select 
     ByCat.CatCount 
     + BySubCat.SubCatCount 
     + BySubSubCat.SubSubCatCount as Cnt 
    from 
     (select count(*) CatCount 
      from view_category) ByCat, 

     (select count(*) SubCatCount 
      from view_sub_category) BySubCat, 

     (select count(*) SubSubCatCount 
      from view_subsub_category) BySubSubCat 

也可以设想,如果你需要的总和()或AVG()计算过从其他元素...你可以将这些成一排,然后使用,但是你需要。

相关问题