我有两张 table 。一个用于 movies
(其中列出了 id、movie_title、movie_director
等),另一个是 likes
表:它跟踪有多少人添加了任何特定的电影到他们的最爱。它只有两个字段movie_id, user_id
。两者都是来自相应表(movies
和 users
)的外键引用
。
现在我想显示所有按喜欢次数最多排序的电影。
所以我必须使用选择查询,并且在其中我必须通过子查询对其进行排序,子查询计算每部电影的点赞数。
是这样的吗?
select *
from movies
inner join likes
on movies.id=likes.movie_id
order by (
select count *
from likes
where movie_id=?
)
我真的被困在这里了。 Likes 表有这样的结构
user_id 1,movie_id 2, user_id 2, movie_id 2
所以在选择时,我应该先找到 ID 为 2 的电影,因为它有 2 个赞。
但是怎么做呢?
艾玛。
最佳答案
你必须计算点赞数并按计数排序:
select m.id,
m.movie_title,
m.movie_director,
count(l.movie_id) as num_likes
from movies m
left join likes l
on m.id = l.movie_id
group by m.id, m.movie_title, m.movie_director
order by num_likes desc
这将按降序进行(最喜欢的在前)
关于php - MYSQL子查询内连接order by count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26242454/