2015-01-09 45 views
0

请注意:NO JOIN请。sql将多个查询合并为一个?

比方说,我得到了一个表user,字段名称gendergender值可以是0,1,-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 

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

+0

你打算给你的问题添加其他的东西吗? –

回答

1
select gender, count(*) 
from user 
group by gender 
+0

忍者,我正要写信使用'GROUP BY'。 – Shahar

0

GROUP BY最有可能为您提供最好的服务。但是,您唯一的限制是“不加入”。这将允许(除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

+0

“GROUP BY最有可能为您提供最好的服务,但您要求提供”不加入“。” - 什么时候GROUP BY被视为加入? –

+0

永远不要在这里 - 但我提供的两个选项(至少对我来说)是“不加入”。因此,我认为,把它们指出来是可以的......将会重新... – Abecee