MySQL:在1个查询中具有更多WHERE的COUNTS

Daz*_*ylz 1 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';
Run Code Online (Sandbox Code Playgroud)

在一个查询中(所以没有子查询)?

M K*_*aid 5

是的,你可以使用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
Run Code Online (Sandbox Code Playgroud)

  • 一个`true`MySQL解决方案. (2认同)