员工:

| id  | name  | department | managerId |
+-----+-------+------------+-----------+
| 101 | John  | A          | null      |
| 102 | Dan   | A          | 101       |
| 103 | James | A          | 101       |
| 104 | Amy   | A          | 101       |
| 105 | Anne  | A          | 101       |
| 106 | Ron   | B          | 101       |
+-----+-------+------------+-----------|

从上面的员工表中,我们需要管理至少5名员工的经理的姓名. 我提出了这个疑问:

select name from employee where managerid in (
    select managerid 
    from employee 
    where managerid is not null 
    group by managerid having count(*) > 4
);

我预计会有以下输出:

| name |
+------+
| John |
+------+

但相反,它却抛出了:

| ----- |
| Dan   |
| James |
| Amy   |
| Anne  |
| Ron   |

where分句将manager id返回为101.但最终的 Select 并不是拿起相应的名字.哪里出了问题?

推荐答案

您正在 Select 拥有超过4名员工的经理的所有员工.您需要将where条款更改为按id而不是managerid过滤:

select name from employee where id in (
    select managerid 
    from employee 
    where managerid is not null 
    group by managerid having count(*) > 4
);

Mysql相关问答推荐

慢查询日志(log)甚至包括快速查询,因为它包括等待锁定所花费的时间

Python - 执行原始 SQL 时获取更新查询 (Mysql) 的结果

获取连续11天未考勤的员工

MySQL 计数出现的百分比大于

如何获取每日登录用户数?

在 MySQL 中跨日期和位置计算和排序实体的共现

如何在 axios 请求中将更新的设置状态值作为参数传递

Mysql 中相同列的相关 2 查询

Mysql,显示谁已经和没有 Select 退出巴士服务

需要按总金额检索前 3 个供应商,每个类别 - 子类别

如何解决这个特定的 SQL 查询?我的解决方案还返回不想要的值

由于长时间操作而断开连接后,我的 sql 查询是否继续执行?

了解 SQL 中的元组语法

SQL 中的双杠 (||) 是什么意思?

有没有办法在 Zend Framework 1.5 中执行INSERT...ON DUPLICATE KEY UPDATE?

如何使用 phpmyadmin 复制数据库?

字符ي和ی以及波斯语的区别 - Mysql

Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?

如何将数组存储到mysql中?

从另一个表中 Select 具有 id 的行