想这样的,我的2个表如下
问题表Q:
id name uid addtime cons
编号 问题标题 用户 时间 问题内容
回答表A
id cons uid addtime Qid
编号 回答内容 用户 时间 问题编号
上面的回答数,能不能写一个sql,即返回问题,又返回这个问题的回答数,这样就可以连接一次数据库,提高性能,sql怎么写呢
select *,count=(select count(*) from a where qid=q.id) from q
在表Q中添加一个字段answerCount,同时添加一个触发器(当回答表A insert 时,更改answerCount值).
select count=(select count(0) from a where a.qid=q.id),q.* from q
按照该类问题的主流解决方法是不每次count的,一般情况对统计数不会要求严格的及时一致性。为了性能大部分都是保证延迟就好,也就是说count的结果不是每添加一条都会变。这样能保证性能。不信你看大部分网站的评论数什么的。
如果非得计算:
select name,count(1) answerCount from
(
select a.name from #qestion q left join #answer a
on q.qid = a.qid
) c
group by name