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
     
  • 相关阅读:
    redis sentinel(哨兵)配置解读
    配置哨兵监控Redis运行情况
    java 客户端链接不上redis解决方案
    Redis配置主从架构,实现读写分离
    Redis简介,安装和配置,停止,卸载(图解方式)
    linux下监控用户的操作记录---录像播放性质
    Spring的数据库开发
    Spring中Bean的作用域、生命周期
    Spring中Bean的实例化
    Spring之初体验
  • 原文地址:https://www.cnblogs.com/wicub/p/5646887.html
Copyright © 2011-2022 走看看