php - 根据第二个表的列数比较两个表结果

标签 php mysql sql

我使用的是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/

相关文章:

mysql - Innodb 和临时表

sql - postgres alter table 因连接池而挂起

sql - 如何向 "expand"当前有一个字段表示重复记录的表写入 sql 查询?

php - Yii2 Twitter Bootstrap 徽章颜色未更改 : badge-success badge-danger e. t.c 类未找到

php - 从两个不同的来源加入同一张 table

PHP MySQL 更新返回成功,但没有行被更改

mysql - 我怎样才能得到我的结果 sumOfSalary 的顶级查询

php - 如果使用三元运算符,如何修复我的 PHP 内联?

javascript - 如何使用 href 提交表单后在同一页面上获取文本?

mysql - 获取 SQL 中行的值或空条目