我使用的是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。
现在我需要从 user_like
中找出最喜欢的前 20 首歌曲 id
并从 user_songs< 中获取
.user_songs
中的所有数据
如何做到这一点?
在此先感谢您花费宝贵的时间来解决此问题。
最佳答案
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
结果上的绑定(bind)值。它只会在结果列表中显示 20 条记录。
关于php - 根据第二个表的列数比较两个表结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14353410/