mysql数据库,sql语句,把一个表中的统计数量,更新到两一个表中

比如有两个表,一个是A表,一个是B表。
A表字段:cid (cid有重复)
B表字段:cid,cnum (cid无重复)

统计SQL:SELECT cid,COUNT(*) FROM comment GROUP BY cid

结果是:
1 6
2 3
3 3
4 9
5 4

问题是:结合A表和B表统计A表中cid的数量,把右边的结果更新到B表cnum中。
已解决。update语句后面不可以跟 from 的

update b set b.cnum = (select c.counts from
(SELECT cid,COUNT(*) counts FROM comment GROUP BY cid) c
where a.cid=c.cid);

哎,禁不住说一声,苦逼程序员啊,都这么晚不睡

你试试吧,按照你描述的,我这么写应该就通过了,有问题直接hi追问

你也很晚还在,那个c是什么?

追答

c是SELECT cid,COUNT(*) counts FROM comment GROUP BY cid这一串的结果集,起了个别名叫c,其实你可以理解为一个临时表,将来要调用这里边的数

是不这么说不太好理解啊?
这样
select b.counts from
(select id,count(*) counts from 表a) b
where b.counts=2

这么看一目了然了吧,那个c跟这个一个性质

追问

好吧 知道了

追答

先睡了,希望这问题别被推荐,要不又接不上了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-05
Update B
set B.cnum = A.Total
From B
INNER JOIN (SELECT cid,COUNT(*) AS Total FROM A GROUP BY cid) A
ON B.cid =A.cid
第2个回答  2013-03-07
update b
set b.cnum = a.cnum
From (select cid,count(*) AS cnum from a group by cid) a
where b.cid =a.cid

不知道就说不知道的。还不能跟from。无知真可怕,lz回家吃奶吧
相似回答