【发布时间】:2012-10-23 19:42:47
【问题描述】:
我对 MySQL 比较陌生,我很难尝试按三列对表进行排序。
这是一个存储了数千个视频数据的数据库,我想在我的网站上创建一个标签,列出向用户推荐的视频。
如果可能,最好只对最近添加的最近 100 个视频(记录)进行排序,这些视频(记录)已按“键”列自动递增。
在 100 条有序记录中,我实际上只会从数据库中检索 5 条记录并将它们存储到 PHP 变量中。
我试图让它按如下方式对列进行排序。
key DESC
rating_score DESC
view_count DESC
我之前使用了另一个 MySQL 语句,它按有效的两列对视频进行排序。
SELECT `title`, `duration`, `rating_score`, `imageurl`, `player_url` FROM (SELECT * FROM `archived_videos` ORDER BY `key` DESC LIMIT 0,210) AS ttbl ORDER BY `rating_score` DESC
上述按三列排序的 MySQL 语句的当前版本和修改版本如下所示。
SELECT `title`, `duration`, `rating_score`, `imageurl`, `player_url` FROM ((SELECT * FROM `archived_videos` ORDER BY `key` DESC LIMIT 0,100) AS ttbl (SELECT * FROM `archived_videos` ORDER BY `view_count` DESC) AS ttbl) ORDER BY `rating_score` DESC LIMIT 0,5
如果精通 MySQL 的人可以看看这个,你将是一个救命稻草。
【问题讨论】:
-
这条评论主要是给想回答的人准备的。这个问题似乎有点误导。期望的结果是(我认为)100 个最新条目中评分最高的 5 个条目。仅按
key列排序不会得到想要的结果。 -
@G-Nugget +1...感谢您的澄清。