我正在使用 MySQL 并编写此查询:
select gauno, count(potno)
from druide_potion
group by gauno
having count(potno) = min(count(potno))
但是 Mysql 说:“#1111 - 组功能的使用无效”。
这个请求在什么地方不正确?(当我删除 HAVING 时,我没有错误,但也没有预期的结果)。
谢谢。
我正在使用 MySQL 并编写此查询:
select gauno, count(potno)
from druide_potion
group by gauno
having count(potno) = min(count(potno))
但是 Mysql 说:“#1111 - 组功能的使用无效”。
这个请求在什么地方不正确?(当我删除 HAVING 时,我没有错误,但也没有预期的结果)。
谢谢。
在 having 子句中,每个聚合只返回一个值,因此请求min()
ofcount()
是没有意义的。
您可能正在寻找这样的东西:
select *
from druide_potion
group by
gauno
having count(potno) =
(
select count(potno)
from druide_potion
group by
gauno
order by
count(potno)
limit 1
)
这将返回所有gauno
具有非空potno
列的最少行数。
select gauno, count(potno)
from druide_potion
group by gauno
order by count(potno)
limit 1
正确的 ANSI 查询
SELECT D.*
FROM
(
select min(cnt) MinCount
FROM
(
select gauno, count(potno) cnt
from druide_potion
group by gauno
)
Counted1
) MinCounted
inner join
(
select gauno, count(potno) Cnt
from druide_potion
group by gauno
) Counted2
on MinCounted.MinCount = Counted.Cnt
inner join druide_potion D
ON D.gauno = Counted2.gauno