在MYSQL中,从一个表中选择行,其中的值和顺序与另一个表中的值和顺序相同
我有两张桌子:在MYSQL中,从一个表中选择行,其中的值和顺序与另一个表中的值和顺序相同,mysql,sql,Mysql,Sql,我有两张桌子: 职位: 和表决: post_id vote 2 2 1 5 3 1 1 3 我想通过“投票”表中的评级显示排名前10的帖子: 但是它是按邮政id排序的。我如何按总票数排序呢?如果您想按票数排序post中的前10项记录,请使用join和groupby: select p.* from post p join voting v on p.id = v.post_id group by p.id o
职位: 和表决:
post_id vote
2 2
1 5
3 1
1 3
我想通过“投票”表中的评级显示排名前10的帖子:
但是它是按邮政id排序的。我如何按总票数排序呢?如果您想按票数排序
post
中的前10项记录,请使用join
和groupby
:
select p.*
from post p join
voting v
on p.id = v.post_id
group by p.id
order by count(*) desc
limit 10;
要获得实际投票,请在
选择中包括count(*)
。
如果您希望通过投票获得post
中的前10条记录,请使用加入和分组方式
:
select p.*
from post p join
voting v
on p.id = v.post_id
group by p.id
order by count(*) desc
limit 10;
要获得实际投票,请在选择中包括count(*)
。
这可能是您需要的:
SELECT post.id, post.text FROM post
JOIN voting ON voting.post_id = post.id
GROUP BY post.id
ORDER BY AVG(vote) DESC
LIMIT 10
至少我认为按平均评级订购是有意义的。但当然,您可以按给定的总分订购:
SELECT post.id, post.text FROM post
JOIN voting ON voting.post_id = post.id
GROUP BY post.id
ORDER BY SUM(vote) DESC
LIMIT 10
也许这就是你需要的:
SELECT post.id, post.text FROM post
JOIN voting ON voting.post_id = post.id
GROUP BY post.id
ORDER BY AVG(vote) DESC
LIMIT 10
至少我认为按平均评级订购是有意义的。但当然,您可以按给定的总分订购:
SELECT post.id, post.text FROM post
JOIN voting ON voting.post_id = post.id
GROUP BY post.id
ORDER BY SUM(vote) DESC
LIMIT 10