• 文章和评论数多表查询问题?


    需求说明

    2张表:article,comments

    文章表:article表结构:
    article_id,artcile_title,content,comments

    评论表:comments表结构:
    comments_id,content,article_id

    一篇文章对应多条评论,其中通过article_id进行对应哪些comments的记录属于哪一篇article。

    现在想通过一条执行SQL,把所有article的内容和对应评论的个数读取出来,如果article无对应comments的记录说明该文章暂时无人参与评论,那么count为0.
    这条SQL得怎么写?同时不至于太大性能开销。因为这里评论都放到一张表里去,可能评论数记录后续有点大。
    谢谢!

    select A.article_id, A.artcile_title, A.content, B.comments_count from article A LEFT JOIN (select article_id, isnull(count(1), 0) as comments_count from comments group by article_id) B ON A.article_id = B.article_id

     
    CREATE TABLE `table1` (
      `id` int(11) DEFAULT NULL,
      `name` varchar(10) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET='utf8'
    CREATE TABLE `content` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `uid` varchar(10) NOT NULL,
      `content` varchar(255) DEFAULT NULL,
      `ctime` time DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET='utf8'
     article的内容和对应评论的,取得每篇文章的最新评论。。。 
     
    SELECT a.name,b.content FROM table1 a LEFT JOIN (SELECT * FROM content ORDER BY ctime DESC) b ON a.id=b.uid GROUP BY a.name  
     
     
    一篇文章对应多条评论,其中通过article_id进行对应哪些comments的记录属于哪一篇article,把所有article的内容和对应评论的个数读取出来
     
    SELECT a.name,c FROM table1 a LEFT JOIN (SELECT uid,COUNT(1) AS c FROM content GROUP BY uid) b ON a.id=b.uid
     
     
    http://www.cnblogs.com/zsphper/archive/2010/06/10/mysql-group-by-order-by.html
     http://blog.csdn.net/developerfbi/article/details/8856996
     
  • 相关阅读:
    VirtualApp
    python安装包遇到问题解决
    NMS_非极大值抑制的作用
    解释残差结构的有效性
    使用tcpdump命令抓取sql
    linux进程绑定cpu内核
    查询表空间占用情况
    数据库表分区
    Windows下如何使用ab命令做并发测试
    TCP协议
  • 原文地址:https://www.cnblogs.com/wicub/p/5646887.html
Copyright © 2020-2023  润新知