我有一个名为kb_views
的表,每次查看一个项目时都会在此表中插入一个新行
有一个名为kb_seq
的列,它是名为sequence
kb
个数字
使用PHP选择最受欢迎的10个项目的最佳方式是什么?
答案 0 :(得分:3)
最好的方法是sql查询本身,如果kb_seq包含 每个元素视图的计数,您可以使用
拉出前10名order by `kb_seq`.`count` desc limit 10
,您的查询应如下所示:
select * from `kb_seq` order by `kb_seq`.`count` desc limit 10
如果你没有这样的表,并且只有一个表,每行是一个视图,你将不得不使用组
select count(*) as `viewed_times`, id FROM `kb_views` group by `viewed_item_id` order by `viewed_times` desc limit 10
答案 1 :(得分:1)
这是否符合您的要求:
SELECT
d.*
FROM
kb d,
(SELECT
s.kb_seq, COUNT(*)
FROM
kb s
INNER JOIN
kb_views ct ON ct.kb_seq = s.kb_seq
GROUP BY
s.kb_seq
Order by
2 DESC LIMIT 10) f
where
d.kb_seq = f.kb_seq
在此处查看结果sqlfiddle