2016-01-21 85 views
0

我有这样Mysql的复杂排序

SELECT videos.*, 
     (SELECT COUNT(comment_id) 
     FROM comments 
     WHERE comments.comments_video_id = videos.id) AS video_comments 
FROM videos 
ORDER BY video_comments DESC 

查询现在,如果我有2行以同样“videos_comments”计数,怎么可以这样写,这样这两个视频之间的一个其中有最新的评论(comments_date)在意见表显示第一

+0

只需在带有DESC的ORDER BY中使用comment_Date,并且还可以在GROUP中使用comment_date,这样您将只通过comment_date获得一条记录 –

+0

@GaganUpadhyay感谢您的快速回复,任何示例代码的机会,我相当新MySQL的 – fredmarks

回答

0
SELECT videos.id, count(*) video_comments 
FROM videos LEFT JOIN comments 
ON comments.comments_video_id = videos.id 
GROUP BY videos.id 
ORDER BY video_comments DESC 
0
SELECT videos.id, 
     MAX(comments_date) as latest_comment, 
     COUNT(*) as video_comments 
FROM videos 
LEFT JOIN comments 
     ON comments.comments_video_id = videos.id 
GROUP BY videos.id 
ORDER BY 
     video_comments, 
     latest_comment  

如果你想要的视频。*

SELECT videos.*, 
     video_comments, 
     latest_comment 
FROM videos 
JOIN (
     SELECT videos.id, 
       MAX(comments_date) as latest_comment, 
       COUNT(*) as video_comments 
     FROM videos 
     LEFT JOIN comments 
       ON comments.comments_video_id = videos.id 
     GROUP BY videos.id 

    ) T 
    ON videos.video_id = T.video_id 
ORDER BY 
     video_comments, 
     latest_comment