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 句では、各集計は 1 つの値のみを返すため、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これにより、null 以外の列を含む最小量の行ですべてが返され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 に答える