假设我有一个屏保网站。我想在网站的首页显示当前排名前100位的屏幕保护程序。
我的意思是,“最近”排名前100的屏保。执行此操作的示例查询是什么?
我现在的想法是:
SELECT * FROM tbl_screensavers WHERE WEEK(tbl_screensavers.DateAdded) = WEEK('".date("Y-m-d H:i:s",strtotime("-1 week"))."') ORDER BY tbl_screensavers.ViewsCount, tbl_screensavers.DateAdded这将选择上周添加的("tbl_screensavers.DateAdded")浏览次数最多的("tbl_screensavers.ViewsCount")屏幕保护程序。
然而,在某些情况下,当周没有提交屏幕保护程序,或者少于100个屏幕保护程序。
那么,我如何执行一个查询来选择“最近的”前100个屏幕保护程序呢?希望你知道当我说“最近”或“当前”的顶级屏幕保护程序时,我想要实现的是什么。--又名。观看次数最多的,最近的-不是观看次数最多的,所有时间。
发布于 2010-03-23 13:07:27
如果没有其他算法来权衡视图与最近视图的价值,那么您只需要
SELECT * FROM tbl_screensavers ORDER BY ViewsCount limit 100然而,为了捕捉“最近”的概念,您可能想要引入一个算法来衡量特定视图的最近程度。要做到这一点,一种方法是为每个视图分配一个daysOld分数,并显示得分最低的100分(使用这种机制,低分就像在高尔夫中一样)。
我不是一个足够优秀的MySQL专家来为此编写查询,但它将涉及到对分数进行求和,计算得出的分数是根据daysOld=today-dateOfScore计算的,然后根据该分数对结果集进行排序,限制为100。
https://stackoverflow.com/questions/2497665
复制相似问题