MySQL 子查询和连接语句

MySQL subquery and join statement

我已经编写了一个查询,根据员工 ID emp 从 tables e and profile 中获取员工的性别和姓名,现在我有一个 table喜欢:

gender   name
m         qwqw
f         wewe
m         erer
m         rtrt
f         tyty

使用的查询是:

select gender, name from profile inner join e on profile.emp = e.emp

现在我必须编写一个子查询来创建一个 table 来计算特定性别的员工数量,例如:

gender  count
m        3
f        2

用我写的查询:

SELECT COUNT(gender) AS 'Count' FROM (select gender, name from profile inner join e on profile.emp = e.emp)AS Gender GROUP BY Gender;

我可以打印:

count
3
2

但不是性别列。如何使用连接和子查询来根据需要正确显示数据?

试试下面给出的代码=>

SELECT Gender, COUNT(gender) AS 'Count' FROM (select gender, name from profile inner join e on profile.emp = e.emp)AS Gender GROUP BY Gender;

您尝试过选择 gender, COUNT(gender) 吗?您的查询将变为

SELECT gender, COUNT(gender) AS 'Count' FROM (select gender, name from profile inner join e on profile.emp = e.emp)AS Gender GROUP BY Gender;

您需要在 select 中包含 gender。您可以按未选择的列和表达式进行聚合——尽管这有点不寻常。

在你的例子中,你不需要子查询。另外强烈推荐table别名:

select gender, count(*)
from profile p inner join
     e
     on p.emp = e.emp
group by gender;