2016-12-16 56 views
2

我有一個說法,記錄有多少條記錄attr3 = 1如何在兩個語句上使用連接?

SELECT 'Dept' AS table_name, COUNT(*) 
FROM ((select attr3 from table1) union all 
     (select attr3 from table2) 
    ) t 
WHERE attr3 = '1'; 

現在我需要有一個做同樣的事情,但數多少記錄有attr3 = 2另一個語句。

SELECT 'Dept' AS table_name, COUNT(*) 
    FROM ((select attr3 from table1) union all 
      (select attr3 from table2) 
     ) t2 
    WHERE attr3 = '2'; 

理想情況下,數據將在此格式

Dept   count(*) 
attr3 = 1   4 
attr3 = 2   6 

,如果我單獨做報表,此方法效果顯示,我只是單純的想加入他們在一起。誰能幫忙?

+0

不知道這是否是最好的建議,但是如果我理解正確的話,你也許可以換子查詢兩,然後笛卡爾積它們,然後只選擇1秒和2s – Abdul

+0

使用'OR'運算符 - 'WHERE attr3 ='1'或attr3 ='2'' – Takarii

回答

2

簡單的GROUP BYWHERE attr3 in()應該就足夠了。

SELECT Z.attr3 as Dept, count(*) as cnt 
FROM (SELECT attr3 FROM table1 
     UNION ALL 
     SELECT attr3 FROM table2) Z 
WHERE attr3 in ('1','2') 
GROUP BY Z.attr3 

由於attr3通過where子句定義要通過它通過計算,只需組和聯合後的結果限制爲您的1,2組。

0

該團隊將完成這項工作。

SELECT 'Dept' AS table_name, COUNT(*) 
FROM ((select attr3 from table1) union all 
     (select attr3 from table2) 
    ) t2 
WHERE attr3 = '2' 
group by dept; 

http://www.w3schools.com/sql/sql_groupby.asp

+0

關閉,但是如何返回attr3組的記錄?看起來像這樣只會返回組2的attr3。 – xQbert