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 排序的另一个选择中。然后获取前三个值。

于 2013-05-21T15:31:47.223 回答