sql将多个查询合并为一个?

时间:2015-01-09 02:10:03

标签: mysql sql

注意:请JOIN取消。

假设我有一个表user,其字段名称为gendergender值可以是01-1

我想分别知道那些值的数量。 我所知道的是使用三个sql查询,如下所示。

select count(1) from user where gender=0
select count(1) from user where gender=1
select count(1) from user where gender=-1

问题:如何将上述内容合并为一个查询? 顺便说一句,我是SQL的新手。

2 个答案:

答案 0 :(得分:1)

select gender, count(*) 
from user 
group by gender

答案 1 :(得分:0)

GROUP BY最有可能为您提供最佳服务。但是,你唯一的限制是" NO JOIN"。对于

中的任何一个,这将允许(除GROUP BY之外)
SELECT
  (SELECT COUNT(1) FROM User WHERE gender = 0) AS genderNought
  , (SELECT COUNT(1) FROM User WHERE gender = 1) AS genderOne
  , (SELECT COUNT(1) FROM User WHERE gender = -1) AS genderMinusOne;

SELECT COUNT(1) AS hits, gender, 'genderNought' AS genderInWords FROM User WHERE gender = 0 UNION ALL
SELECT COUNT(1), gender, 'genderOne' FROM User WHERE gender = 1 UNION ALL
SELECT COUNT(1), gender, 'genderMinusOne' FROM User WHERE gender = -1;

请参阅SQL Fiddle