在一个查询中选择两个计数

时间:2012-01-28 16:19:38

标签: sql count

我有用户(用户,通行证,电子邮件)表,我想得到用户='someuser'的用户数 以及在一个查询中发送电子邮件='someemail'的电子邮件的数量,我想出了:

SELECT (

SELECT COUNT( user )
FROM users
WHERE user = 'someuser'
), (

SELECT COUNT( email )
FROM users
WHERE email = 'someemail'
)
FROM users

但我想知道是否有更好的方法呢?在此先感谢:)

1 个答案:

答案 0 :(得分:8)

在您的情况下,这不是正确的方法。您的计数可能总是0或1,并且从NC索引中得到满足。

如果您想扫描更多数据,可以更高效地执行此操作:

select sum(case when user = 'x' then 1 end) UserCount, sum(case when email = 'x' then 1 end) EmailCount
from users

这将始终扫描表格。这取决于哪个版本更快的数据。在你的情况下,你的速度更快。