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

需求说明

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
 
posted @ 2016-07-06 14:53  午时的海  阅读(358)  评论(0编辑  收藏  举报