mysql - 子查询不提供输出

标签 mysql sql subquery aggregate-functions

我正在尝试运行一个查询,该查询返回一个 ID 列表,这些 ID 在名为 Hospital 的表中出现超过 3 次。到目前为止,我想出了这个:

SELECT doctorID
FROM Hospital 
WHERE doctorID IN

(SELECT temp.doctorID, count(temp.doctorID) as frequency
FROM Hospital as temp
GROUP BY temp.doctorID
HAVING frequency >3);

但由于某些原因,我在运行时遇到错误

Code: 1241. Operand should contain 1 column(s)

当我环顾四周时,这似乎是一个常见的错误,但我找不到适用于我的现有解决方案。当我单独运行括号中的查询时,它工作正常。那么它为什么不能用作子查询呢?

最佳答案

从子查询中删除第二列,将 count() 移到 HAVING 子句中:

SELECT doctorID
FROM Hospital 
WHERE doctorID IN

(SELECT temp.doctorID
FROM Hospital AS temp
GROUP BY temp.doctorID
HAVING count(temp.doctorID) > 3);

您可以更简单地获得相同的结果,而无需子查询:

SELECT doctorID
FROM   Hospital
GROUP  BY doctorID
HAVING count(doctorID) > 3;

关于mysql - 子查询不提供输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048109/

相关文章:

mysql - Play 服务器随机无法与Mysql建立连接

mysql - 组合 3 个 MySQL 查询

python - ORDER BY SQLAlchemy 中的子查询

php - MySQL 双表 INNER JOIN,LEFT JOINED 到第三个表,只有一行具有最低值

mysql - SQL 连接。从三个表中获取数据

mysql - sql测试条件如果失败转移到下一个人

sql - 请帮我纠正这个 Rails/ruby 方法吗?

mysql - 进行重命名输出条目的 SQL 查询

sql - View 在修改时失去其授权

mysql - 从此 SQL 查询中删除变量(子查询帮助)