2

私が基本的にやろうとしているのは、データベースの列から最も頻繁に使用される上位 3 つの値を取得することです。解決策を検索しましたが、何も見つかりませんでした。最も頻繁に使用されるコードを取得するコードは既にあります。

 $mostFrequentUser = $db->query("SELECT emailFrom FROM details group by emailFROM having count(*) = (SELECT count (*) FROM details group by emailFrom ORDER BY count(*) desc LIMIT 1)");
 $frequent = $mostFrequentUser->fetchColumn();

これは、システムを最もよく使用する 1 人から 3 人に注文して、ウェブページに表示できるようにするためです。ありがとう

4

3 に答える 3

1

以下を試してください

SELECT emailFrom 
FROM (
    SELECT emailFrom, COUNT(emailFrom) AS myCount
    FROM details
    GROUP BY emailFROM 
    ORDER BY myCount DESC
    LIMIT 3
    ) temp
于 2013-05-21T15:33:00.107 に答える
0

最初の結果の列のみをフェッチしています。fetchAll()カーソルを使用または反復したい。

$frequent = $mostFrequentUser->fetchAll(PDO::FETCH_COLUMN);

また、上記のように制限を 1 から 3 に変更します。

于 2013-05-21T15:31:39.703 に答える
0

(あなたがしたように)グループ化を行い、カウントを「n」にエイリアスしてから、nで注文する別の選択内に選択をラップします。次に、最初の 3 つの値を取得します。

于 2013-05-21T15:31:47.223 に答える