MySQL:在1个查询中使用更多WHERE`s进行计数

MySQL:在1个查询中使用更多WHERE`s进行计数,mysql,count,where,Mysql,Count,Where,是否可以这样做: SELECT COUNT(username) as username FROM users WHERE username = 'Piet'; SELECT COUNT(email) as email FROM users WHERE email = 'piet@google.nl'; SELECT COUNT(ip_registed) as ip FROM users WHERE ip = '127.0.0.1'; 在一个查询中,那么没有子查询吗?是的,您可以使用SUM这应该

是否可以这样做:

SELECT COUNT(username) as username FROM users WHERE username = 'Piet';
SELECT COUNT(email) as email FROM users WHERE email = 'piet@google.nl';
SELECT COUNT(ip_registed) as ip FROM users WHERE ip = '127.0.0.1';
在一个查询中,那么没有子查询吗?

是的,您可以使用SUM这应该可以做到这一点,将SUM与表达式一起使用将导致布尔值为1或0,因此当表达式的计算结果为true时,这将相应地为您提供计数,并且当使用聚合函数而没有分组时,它们将生成一行,把整张桌子作为一组

SELECT
SUM(username = 'Piet') as username,
SUM(email = 'piet@google.nl') as email,
SUM(ip = '127.0.0.1') as ip
FROM users
是的,您可以使用SUM这应该可以做到,将SUM与表达式一起使用将导致布尔值为1或0,因此当表达式的计算结果为true时,这将相应地为您提供计数,并且当使用聚合函数而不使用组时,它们将导致一行,并假定整个表为一个组

SELECT
SUM(username = 'Piet') as username,
SUM(email = 'piet@google.nl') as email,
SUM(ip = '127.0.0.1') as ip
FROM users

因为查询实际上没有关系,所以三个子查询或三个单独的查询可能是最快的查询方式。您可以将匹配的行添加到upp中,但这可能不会使用任何索引,而是使用完整的表扫描。因为查询实际上没有关系,所以三个子查询或三个单独的查询可能是最快的查询方式。您可以添加upp匹配的行,但这可能不会使用任何索引,而是使用完整的表扫描。这是一个真正的MySQL解决方案。如果有人将其称为dirty,只需使用sumifusername='Piet',1,0即可。我喜欢脏的方式,因为布尔值自然是0 | 1,不是吗?@flaschenpost可以使用if语句和case语句,但我在回答问题时给出的最短方式是你称之为脏的一种解决方案,即如果/case更具可读性,我不相信它们是脏的MySQL解决方案。如果有人将其称为脏,就拿sumifusername='Piet',1,0。我喜欢肮脏的方式,因为布尔值自然是0 | 1,不是吗?@flaschenpost可以使用if语句和case语句,但我在回答问题时给出的最短方式是你称之为肮脏的一种解决方案,即如果/case更具可读性,我不相信它们是肮脏的