1

与えられた table menu、彼には column continent、たとえば彼にはこのデータがあります

continent
----------
africa
africa
europe
europe
europe

列の回数が多い大陸名を取得したいのですが、結果は でなければなりませんeurope

私はクエリを書いていますが、私のクエリは難しく、このような場合のより簡単なソリューションが存在する必要があると思います。いくつかのアイデアはありますか?

これは私のクエリです

    SELECT continent FROM (
        SELECT continent, COUNT(continent) AS cnt FROM menu GROUP BY continent
    ) AS t
    WHERE cnt = (
        SELECT MAX(cnt) FROM ( 
            SELECT  COUNT(continent) AS cnt FROM menu GROUP BY continent
        ) AS t2
    )
4

1 に答える 1

1

これを試して:

SELECT continent FROM (
    SELECT continent, COUNT(continent) AS cnt
    FROM menu
    GROUP BY continent
) AS t
ORDER BY cnt DESC
LIMIT 0, 1

単一のクエリでも実行できると思います。

SELECT continent, COUNT(continent) AS cnt
FROM menu
GROUP BY continent
ORDER BY cnt DESC
LIMIT 0, 1

よろしく


アップデート:

SELECT continent
FROM menu
GROUP BY continent
HAVING count(continent) = 
(
    SELECT COUNT(continent) AS cnt
    FROM menu
    GROUP BY continent
    ORDER BY cnt DESC
    LIMIT 0, 1
)

内部クエリは、繰り返されるアイテムの最大数を返します。次に、その値はHAVING演算子に適用される外部クエリで使用され、正確にその回数繰り返されるアイテムのみを返します。これはmysqlで機能しますが、他のSQL方言ではわかりません。

于 2012-11-03T18:50:02.273 に答える