1

我正在使用mysql数据库。
我有两张桌子,一张是user_songs,第二张是user_like

领域user_song

id(auto incement)
song_id
user_id
song_name
song_file

领域user_like

id(auto incement)
song_id
uder_id
like

user_like 我保存任何用户喜欢歌曲的数据时,每一行都包含如下数据:

1 1 1 1

请注意,喜欢会为不喜欢保存 0 或 1.0,为喜欢保存 1。

现在我需要从中找出前 20 首最喜欢的歌曲并id从中获取user_like所有数据。user_songsuser_songs

这该怎么做?
提前感谢您花费宝贵的时间来解决此查询。

4

1 回答 1

0
SELECT  a.*, b.totalLike
FROM    user_song a
        INNER JOIN
        (
            SELECT  song_id, COUNT(*) totalLike
            FROM    user_like
            GROUP   song_id
        ) b ON a.song_id = b.song_ID
ORDER BY totalLike DESC
LIMIT 20

注意:上面的查询不处理totaluserLike结果的绑定值。它只会在结果列表中显示 20 条记录。

于 2013-01-16T07:43:12.073 回答