0

我正在使用 MySQL 并编写此查询:

select gauno, count(potno)
from druide_potion
group by gauno
having count(potno) = min(count(potno))

但是 Mysql 说:“#1111 - 组功能的使用无效”。

这个请求在什么地方不正确?(当我删除 HAVING 时,我没有错误,但也没有预期的结果)。

谢谢。

4

3 回答 3

3

在 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列的最少行数。

于 2011-01-29T12:59:46.333 回答
0
select gauno, count(potno)
  from druide_potion
 group by gauno
 order by count(potno)
 limit 1
于 2011-01-29T13:01:31.640 回答
0

正确的 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
于 2011-01-29T21:17:49.113 回答