日期:2014-05-17  浏览次数:20629 次

一条好友统计信息的sql语句的求助
我有一张好友请求表,
FROMID  TOID  STATE
 
意思是谁请求了谁,状态是什么,STATE =1 表示同意,0 表示未同意

select TOID,count(case when STATE = 1 then 1 else null end) as friendnum,COUNT(CASE WHEN STATE = 0 THEN 1 ELSE NULL END) AS unreplynum,NOW()  from `INVITE_RECORD` group by TOID order by null

得到记录
900 , 0 , 10
912 , 0 , 10
930 , 0 , 10
现在我有另外一个请求统计表,我想统计上面的记录到下面这样的表
(不用view,这里统计不需要实时,那样统计有点慢)
TOID  friendnum  unreplynum
900 ,    0 ,   0
912 ,    0 ,   0
930 ,    0 ,   0
请求统计表 里面是存在TOID的主键了的
不知道这个update 语句应该怎么写
SQL

------解决方案--------------------
--你的不是SQL SERVER语法。SQL SERVER参考如下:
UPDATE B
SET B.friendnum  = a.friendnum,
b.unreplynum = a.unreplynum
FROM
(
SELECT  TOID ,
COUNT(CASE WHEN STATE = 1 THEN 1
   ELSE NULL
  END) AS friendnum ,
COUNT(CASE WHEN STATE = 0 THEN 1
   ELSE NULL
  END) AS unreplynum ,
GETDATE()
FROM    INVITE_RECORD
GROUP BY TOID
) a
INNER JOIN yourNewtable B
ON a.TOID = b.TOID