我有
office
office_id name
--------- -----------------
1 office1
2 office2
3 office3
person
uid office_id age gender
---------------------------
1 1 20 male
2 1 20 female
3 1 20 male
4 1 21 male
5 2 20 male
6 3 20 male
我是否可以使用 ONE 查询来获取
office_id name age_20 male
-----------------------------
1 office1 3 3
2 office2 1 1
3 office3 1 1
答案 0 :(得分:9)
是的,你可以。 MySQL支持布尔算法,我认为这是最简单的方法。如果您想要更友好的RDBMS,请使用CASE WHEN age = 20 THEN 1 ELSE 0 END
。
SELECT a.office_ID,
a.name,
SUM(age = 20) age_20,
SUM(gender = 'Male') male
FROM office a
LEFT JOIN person b
ON a.Office_ID = b.office_ID
GROUP BY a.office_ID, a.name