2016-11-28 70 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,因此不需要大小写表达式或任何东西。

相关问题