按2个值排序,使用3个表

时间:2012-11-13 14:43:12

标签: mysql sql multiple-tables

对不起,如果这是一个愚蠢的问题,我搜索了一下,找不到像我这样的例子的解决方案。

我有一个带有查询的小型照片共享应用程序,该查询输出用户的ID号,按照他们拥有的关注者数量排序。我想略微改变查询,以便如果用户拥有相同数量的关注者,他们将按照他们上传的照片数量进行排序。

我如何编辑查询?我所做的所有尝试都没有成功。

当前查询如下所示:

SELECT Users.ID, COUNT(User_Followers.FollowingUserID)
               AS follower_count FROM Users
               LEFT JOIN User_Followers ON Users.ID = User_Followers.FollowingUserID
               GROUP BY Users.ID
               ORDER BY follower_count DESC

User_Followers表如下所示:

ID     UserID     FollowingUserID    DateFollowed

照片表看起来像这样:

ID     PostedByUserID     DatePosted

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

SELECT  Users.ID,   
        COUNT(User_Followers.FollowingUserID) AS follower_count 
FROM    Users
        LEFT JOIN User_Followers 
            ON Users.ID = User_Followers.FollowingUserID
        LEFT JOIN
        (
            SELECT PostedByUserID, COUNT(*) postCount
            FROM photos
            GROUP BY PostedByUserID
        ) a ON Users.ID = a.PostedByUserID
GROUP BY Users.ID
ORDER BY follower_count DESC, a.postCount DESC