zoukankan      html  css  js  c++  java
  • 文章和评论数多表查询问题?

    需求说明

    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
     
  • 相关阅读:
    内网安全隐藏通信隧道基础&&网络通信隧道之一ICMP隧道
    windows server2012 r2 .net framework 3.5失败
    awvas启动不起来解决方案
    Kali Linux解压包命令:
    kali linux 中python2不带pip的解决方法
    内网渗透信息收集
    团队作业(二):需求分析
    ORA00600: internal error code, arguments: [16513], [1403] 恢复
    helpyouhelpyou@cock.li 加密数据库恢复
    合成孔径雷达成像——算法与实现内容简要:第1章
  • 原文地址:https://www.cnblogs.com/wicub/p/5646887.html
Copyright © 2011-2022 走看看