用SQL语句如何实现这样的统计更新

webwalker 2006-05-16 06:17:51
有两个表:
用户表:
用户ID 用户名 发表日志数
1 A 2
2 B 10
文章表:
文章ID 发表者 ……
1 A
2 A
3 A
4 B

我想先从文章表里读出每个用户的发表数,然后更新用户表里的“发表日志数”

采用SQL语句(过程)来实现,请问有什么思路呢。

有人说用游标:从文章表里读出每一条记录,然后更新……

以下是类似的ASP代码

SQL="SELECT mem_Name,mem_PostLogs,mem_PostComms FROM blog_Member"
PostNums_MemList.Open SQL,Conn,1,3
SQLQueryNums=SQLQueryNums+1
Do While Not PostNums_MemList.EOF
PostNums_MemList("mem_PostLogs")=Conn.ExeCute("SELECT COUNT(log_ID) FROM blog_Content WHERE log_Author="""&PostNums_MemList("mem_Name")&"""")(0)
SQLQueryNums=SQLQueryNums+1
PostNums_MemList("mem_PostComms")=Conn.ExeCute("SELECT COUNT(comm_ID) FROM blog_Comment WHERE comm_Author="""&PostNums_MemList("mem_Name")&"""")(0)
SQLQueryNums=SQLQueryNums+1
PostNums_MemList.Update
PostNums_MemList.MoveNext
Loop


大家帮忙想想……
...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
webwalker 2006-05-16
  • 打赏
  • 举报
回复
谢谢楼上热心的帮忙

我采用了游标的方法
上面的非常不错……
wwh999 2006-05-16
  • 打赏
  • 举报
回复
--将以下代码复制入查询分析器进行测试...2楼的语句可以完成LZ的要求..

use pubs
--判断是否用同名表,有则删除
if exists(select * from sysobjects where name='用户表') drop table 用户表
if exists(select * from sysobjects where name='文章表') drop table 文章表
GO
--------------------------------------------------
--生成测试用表、数据
create table 用户表(用户ID int,用户名 varchar(10),发表日志数 int)
insert 用户表 select 1,'A',2
union all select 2,'B',10

create table 文章表(文章id varchar(10),发表者 varchar(10))
insert 文章表 select 1,'A'
union all select 2,'A'
union all select 3,'B'
union all select 4,'B'
union all select 5,'B'
union all select 6,'B'
union all select 7,'B'
union all select 8,'B'
union all select 9,'B'
union all select 10,'B'
union all select 11,'B'
union all select 12,'B'
--select * from 用户表
--select * from 文章表
GO
--此为完成统计所用的语句

update 用户表 set 发表日志数=(select count(*) from 文章表 where 发表者=用户表.用户名)
select * from 用户表

--删除测试用表、数据
DROP TABLE 用户表,文章表
wwh999 2006-05-16
  • 打赏
  • 举报
回复
用一句SQL就可以了,上面的有字符忘了打空格...汗..
-------------------------------------------------------------------------------------------
update 用户表 set 发表日志数=(select count(*) from 文章表 where 发表者=用户表.用户名)

稍等,我再放点数据测式一下其准确性....再贴出来给你..

-------------------------------------------------------------------------------------------
根据一些书上的资料,应尽可能少的使用游标..

wwh999 2006-05-16
  • 打赏
  • 举报
回复
update 用户表A set 发表日志数=(select count(*) from 文章表 where 发表者=A.用户ID)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧