2012-01-05 62 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()計算過從其他元素...你可以將這些成一排,然後使用,但是你需要。

相關問題