Heim > Fragen und Antworten > Hauptteil
场景是这样的
有一个文章表 article
字段:aid content
还有一个点赞表 praise 字段: id aid time
点赞表的aid字段存的是对应文章的aid
现在要获取文章列表但是要根据点赞数从大到小排列,这个SQL怎么写?
谢谢。
天蓬老师2017-05-16 13:11:04
数据量大的话,left join相对比较慢,如果是分页显示或者只是求前面几十条的数据,可以先求点赞表排序好了的aid,再在文章表中找这些aid对应的文章
仅有的幸福2017-05-16 13:11:04
select a.content from article a left join praise b on a.aid=b.aid order by b.time desc
阿神2017-05-16 13:11:04
SELECT
a.aid,
a.content,
pr.praiseCount
FROM article a
LEFT JOIN (SELECT
p.aid,
count(1) AS praiseCount
FROM praise p
GROUP BY p.aid) pr
ON a.aid = pr.aid
ORDER BY pr.praiseCount DESC
淡淡烟草味2017-05-16 13:11:04
select a.aid,count(p.aid) num from article a left join praise p on a.aid=p.aid group by p.aid order by num desc;