suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php - sql如何根据其他表中的‘数量’进行排序

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

曾经蜡笔没有小新曾经蜡笔没有小新2776 Tage vor697

Antworte allen(4)Ich werde antworten

  • 天蓬老师

    天蓬老师2017-05-16 13:11:04

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

    Antwort
    0
  • 仅有的幸福

    仅有的幸福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

    Antwort
    0
  • 阿神

    阿神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

    Antwort
    0
  • 淡淡烟草味

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

    Antwort
    0
  • StornierenAntwort