繁体   English   中英

获取mysql数据库中前5名最受欢迎的项目?

[英]Get top 5 most popular items in mysql database?

我有一个看起来像这样的数据库:

user_id    photo_id
1          1
1          2
1          3
1          4
2          5
2          6

我想从中获得最受欢迎用户的列表。 像这样:

Popular Users: 1 (4) & 2 (2)

我将如何在PHP中使用mysql进行此操作?

谢谢,库尔顿

PS:我对mysql命令了解很多,所以你不必愚蠢。 谢谢!

基本查询将是:

select user_id, count(user_id) as cnt
from yourtable
group by user_id
order by cnt desc 

要显示结果,请执行以下操作:

$results = array()
while($row = mysql_fetch_assoc($query_result)) {
   $results[] = "{$row['user_id']} ({$row['cnt']})"
   // repeat for however many results you want
}
echo "Popular user: ", implode(" & ", $results);
select user_id, count(user_id) as count from table order by count desc group by user_id

无论如何......

这可以仅使用SQL命令来完成。 这是我要做的:

SELECT user_id, count(user_id) uid_count
FROM <<table>>
GROUP BY user_id
ORDER BY uid_count DESC
LIMIT 5;

GROUP BY收集所有具有相同user_id的行,ORDER BY ... DESC按降序对结果进行排序,因此第一行代表最受欢迎的用户。 LIMIT为您提供前5名结果。

数据库查询看起来像这样:

select user_id, count(photo_id) as c 
from table group by user_id 
order by c desc limit 5;

在PHP中,它看起来像这样:

$sql = 'select user_id, count(photo_id) as c from table group by user_id order by c desc limit 5';
$result = mysql_query($sql, $link);

if (!$result) {
    echo "DB Error, could not query the database\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}

while ($row = mysql_fetch_assoc($result)) {
    echo $row['user_id'];
    echo $row['c'];
}
SELECT COUNT(a.category_id) as cnt,b.category,b.image FROM bookings as a 
INNER JOIN service_category as b ON a.category_id=b.category_id 
GROUP BY a.category_id ORDER BY cnt DESC LIMIT 6

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM