2016-01-21 98 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