mysql - 表中的行顺序取决于相关表

标签 mysql sorting relational-database

我有两张 table 。一个带有视频的 (lol_videos):

ID、标题、网址...

和点击表(lol_hits):

ID、视频ID、时间戳

我想根据视频在特定时间范围内的点击次数(存储在 lol_hits 中)对视频表中的视频进行排序。

我尝试了一些不同的东西,但我真的做不到。到目前为止,我只是得到一些无用的 mysql 错误:(

$query = "SELECT `lol_videos`.*, COUNT(lol_hits.videoID) as hit_count".
" FROM `lol_videos`".
" WHERE published > $now AND pushed > 0".
" LEFT JOIN `lol_hits`".
" ON (`lol_hits`.videoID = `lol_videos`.ID)".
" ORDER BY hit_count DESC";
$result = mysql_query($query) or die(mysql_error());

有人对如何解决这个问题有建议吗?

最佳答案

这应该有效:

SELECT v.*, v2.numHits FROM (
    SELECT videoID, COUNT(ID) 'numHits' FROM lol_hits GROUP BY videoID
) AS v2 
JOIN lol_videos v ON (v.ID = v2.videoID)
ORDER BY v2.numHits DESC;

关于mysql - 表中的行顺序取决于相关表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9004228/

相关文章:

php - 按列数据获取sql查询结果组

sql - 确保表统计信息在 PostgreSQL 中是最新的

sql - 对什么是 superkey 或 Boyce Codd Normal 形式的误解

php - 没有从关联表中提取数据 : Laravel

mysql - 重写 mysql 查询返回意外结果,试图找出原因

MySQL索引最佳性能

performance - 两个未排序的单链表到一个已排序的单链表

arrays - 对快速数组进行排序并跟踪原始索引

php - 根据PHP中的一些重复值对数组进行排序

php - 如何通过命令行在服务器上运行php脚本