php - sql如何根据其他表中的‘数量’进行排序
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-16 13:09:04
[PHP讨论组]

场景是这样的
有一个文章表 article
字段:aid content
还有一个点赞表 praise 字段: id aid time
点赞表的aid字段存的是对应文章的aid
现在要获取文章列表但是要根据点赞数从大到小排列,这个SQL怎么写?
谢谢。

曾经蜡笔没有小新
曾经蜡笔没有小新

全部回复(4)
天蓬老师

数据量大的话,left join相对比较慢,如果是分页显示或者只是求前面几十条的数据,可以先求点赞表排序好了的aid,再在文章表中找这些aid对应的文章

仅有的幸福

select a.content from article a left join praise b on a.aid=b.aid order by b.time desc

阿神
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
淡淡烟草味

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;

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号