是否有办法从子查询中的选定项再次过滤?在子查询中再次过滤
例如:我已经过滤的用户从一个公司:
SELECT * FROM user WHERE companyId = 123
现在我要过滤的女性,男性和今年从公司上述创建的用户一般。目前我使用此查询:
SELECT
(SELECT COUNT(id) FROM user WHERE companyId = 123 && sex = "male") maleUser,
(SELECT COUNT(id) FROM user WHERE companyId = 123 && sex = "female") femaleUser,
(SELECT COUNT(id) FROM user WHERE companyId = 123 && YEAR(created) = YEAR(NOW())) currentYearUser
但我想,使其更容易,如:
SELECT
(SELECT COUNT(id) FROM userAlreadyFilteredByCompany WHERE sex = "male") maleUser,
(SELECT COUNT(id) FROM userAlreadyFilteredByCompany WHERE sex = "female") femaleUser,
(SELECT COUNT(id) FROM userAlreadyFilteredByCompany WHERE YEAR(created) = YEAR(NOW())) currentYearUser
FROM
(SELECT id, created FROM user WHERE companyId = 123) userAlreadyFilteredByCompany
有没有办法做到这一点?我认为在选择已经过滤的结果时,它更易于理解,并且工作量更低。
或者,如它是MySQL,只是'SUM(sex ='male')' – Strawberry