2016-11-28 51 views
0

我有一個機智的用戶。 我想收集女孩和男孩,並顯示它們的數量。 我這樣做:如何顯示不同列中的一個表的mysql計數結果?

SELECT COUNT(`is_male`) AS 'boys' FROM `users` WHERE `is_male` = 1 UNION (SELECT COUNT(`is_male`) AS 'girls' FROM `users` WHERE `is_male` = 0) 

但它顯示一列結果「男孩」,我怎麼能有2列「男孩」和「女孩」顯示一排?

回答

3

只需使用條件彙總:

SELECT SUM(is_male = 1) AS boys, 
     SUM(is_male = 0) as girls 
FROM users ; 

注:

  • 的MySQL把布爾表達式作爲在數字方面的數字,以 「1」 爲真, 「0」 爲假(這是爲什麼這個工程)。
  • 只爲列和日期常量使用單引號,而不是列名稱。
  • 沒有必要轉義您的列名或表名。有很多反標記的查詢很難閱讀。
0

您可以使用條件和

SELECT SUM(is_male = 1) AS boys, 
     SUM(is_male = 0) AS girls 
FROM users 

或計數,但隨後的ELSE部分必須爲NULL,因爲COUNT計算所有非空值

SELECT count(case when is_male = 1 then 1 else null end) AS boys, 
     count(case when is_male = 0 then 1 else null end) AS girls 
FROM users 
0

這是有條件聚集:

SELECT SUM(is_male) AS boys, 
     SUM(is_male <> 1) AS girls 
FROM users; 

MySQL將布爾表達式評估爲1和0,因此不需要大小寫表達式或任何東西。

相關問題