我正在尝试运行一个查询,该查询返回一个 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/