我有用户(用户,通行证,电子邮件)表,我想得到用户='someuser'的用户数 以及在一个查询中发送电子邮件='someemail'的电子邮件的数量,我想出了:
SELECT (
SELECT COUNT( user )
FROM users
WHERE user = 'someuser'
), (
SELECT COUNT( email )
FROM users
WHERE email = 'someemail'
)
FROM users
但我想知道是否有更好的方法呢?在此先感谢:)
答案 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
这将始终扫描表格。这取决于哪个版本更快的数据。在你的情况下,你的速度更快。