文章表字段如下:
ArticleId 文章ID
Title 文章标题
Body 文章内容
Addtime 文章添加时间
ReviewNum 文章评论数量
有一个评论表 Review
评论表字段如下:
ReviewId 评论Id
Title 评论标题
Body 评论内容
AddTime 评论发表时间
ArticleId 该条评论所属文章ID
由于文章表中的评论数量不正确,我想重新更新一下文章表中的评论数量,怎么做?
下面是在SQL 2000 中的写法可行,但是在Access中如何写呢?
UPDATE Article SET ReviewNum =(SELECT COUNT(*) FROM Review WHERE ArticleId=Article.ArticleId)
13 个解决方案
#1
--Access中不支持这种带子查询的update语句,需要用域函数,或借助中间表
--域函数如下:
UPDATE Article as T SET ReviewNum =DCOUNT("*","Review","ArticleId='" & T.ArticleId & "'")
--如果ArticleId是数值型,需要去掉两侧的单引号,如:
UPDATE Article as T SET ReviewNum =DCOUNT("*","Review","ArticleId=" & T.ArticleId)
#2
ccess使用的是Jet-SQL,而SQL Server使用的是T-SQL,两者用法上相差很大。
Access的Update语句中,对于含有聚合子查询的支持远比不上SQL Server,所以要使用域函数或借助临时表。
JET SQL 帮助(jet4 access2000)下载地址
http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
Access的Update语句中,对于含有聚合子查询的支持远比不上SQL Server,所以要使用域函数或借助临时表。
JET SQL 帮助(jet4 access2000)下载地址
http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
#3
如果加上判断是否为NULL ,如何NULL 则更新评论为 0
下面是SQL2000 写法。改成Accesss 怎么写?
UPDATE Article SET Review=ISNULL((UPDATE Article SET ReviewNum =(SELECT COUNT(*) FROM Review WHERE ArticleId=Article.ArticleId)),0)
下面是SQL2000 写法。改成Accesss 怎么写?
UPDATE Article SET Review=ISNULL((UPDATE Article SET ReviewNum =(SELECT COUNT(*) FROM Review WHERE ArticleId=Article.ArticleId)),0)
#4
nz(表达式,0)
#5
UPDATE Article as T SET ReviewNum =DCOUNT("*","Review","ArticleId=" & T.ArticleId)
按照上面的写法,
可老是提示“不能在更新查询中更新全部记录”,说是类型转换失败 。请问是怎么回事啊
按照上面的写法,
可老是提示“不能在更新查询中更新全部记录”,说是类型转换失败 。请问是怎么回事啊
#6
articleId 是数字型啊
#7
--如果ArticleId为字符型,需要加单引号,如:
UPDATE Article as T SET ReviewNum =DCOUNT("*","Review","ArticleId='" & T.ArticleId & "'")
#8
我最终是这样写的
UPDATE Article AS T SET ReviewNum = NZ(DCOUNT("*","Review","ArticleId="+T.ArticleId+""),0)
可老是提示“不能在更新查询中更新全部记录”,说是类型转换失败 。请问是怎么回事啊
articleId 是数字型的啊,不用加'引号 就算我加了仍然有错
UPDATE Article AS T SET ReviewNum = NZ(DCOUNT("*","Review","ArticleId="+T.ArticleId+""),0)
可老是提示“不能在更新查询中更新全部记录”,说是类型转换失败 。请问是怎么回事啊
articleId 是数字型的啊,不用加'引号 就算我加了仍然有错
#9
提示错误如下:
microsoft access 不能在更新查询中更新全部记录
microsoft access 不能更新11个字段是因为类型转换失
败,不能更新0个记录是因为键值冲突,不能更新0个记录
是因为锁定冲突,不能更新0个记录是因为有效性规则冲突。
是否继续执行这个类型的操作查询?
如要忽略错误并且执行查询,请单击 “是”
关于冲突原因的解释,请选择“帮助”按钮。
#10
你的情况分二步:
1. 将统计数据放入一个临时表
select ArticleId,count(ArticleId) as n into tmp
from Review
group by ArticleId
2.更新表Article
update Article a,tmp b
set a.ReviewNum=b.n
where a.ArticleId=b.ArticleId
1. 将统计数据放入一个临时表
select ArticleId,count(ArticleId) as n into tmp
from Review
group by ArticleId
2.更新表Article
update Article a,tmp b
set a.ReviewNum=b.n
where a.ArticleId=b.ArticleId
#11
--先查询试试
select NZ(DCOUNT("*","Review","ArticleId="+T.ArticleId+""),0)
from Article AS T
#12
UPDATE Article SET ReviewNum =dCOUNT('*','Review','ArticleId=' & Article.ArticleId)
假设ID为数字型,上述SQL语句只能在ACCESS中使用
#13
根据错误提示信息,可以确定是数据类型导致。
如果你的'ArticleId'是数字型,去掉两侧的单引号。如果是字符型,需要有单引号。
如果你的'ArticleId'是数字型,去掉两侧的单引号。如果是字符型,需要有单引号。
#1
--Access中不支持这种带子查询的update语句,需要用域函数,或借助中间表
--域函数如下:
UPDATE Article as T SET ReviewNum =DCOUNT("*","Review","ArticleId='" & T.ArticleId & "'")
--如果ArticleId是数值型,需要去掉两侧的单引号,如:
UPDATE Article as T SET ReviewNum =DCOUNT("*","Review","ArticleId=" & T.ArticleId)
#2
ccess使用的是Jet-SQL,而SQL Server使用的是T-SQL,两者用法上相差很大。
Access的Update语句中,对于含有聚合子查询的支持远比不上SQL Server,所以要使用域函数或借助临时表。
JET SQL 帮助(jet4 access2000)下载地址
http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
Access的Update语句中,对于含有聚合子查询的支持远比不上SQL Server,所以要使用域函数或借助临时表。
JET SQL 帮助(jet4 access2000)下载地址
http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
#3
如果加上判断是否为NULL ,如何NULL 则更新评论为 0
下面是SQL2000 写法。改成Accesss 怎么写?
UPDATE Article SET Review=ISNULL((UPDATE Article SET ReviewNum =(SELECT COUNT(*) FROM Review WHERE ArticleId=Article.ArticleId)),0)
下面是SQL2000 写法。改成Accesss 怎么写?
UPDATE Article SET Review=ISNULL((UPDATE Article SET ReviewNum =(SELECT COUNT(*) FROM Review WHERE ArticleId=Article.ArticleId)),0)
#4
nz(表达式,0)
#5
UPDATE Article as T SET ReviewNum =DCOUNT("*","Review","ArticleId=" & T.ArticleId)
按照上面的写法,
可老是提示“不能在更新查询中更新全部记录”,说是类型转换失败 。请问是怎么回事啊
按照上面的写法,
可老是提示“不能在更新查询中更新全部记录”,说是类型转换失败 。请问是怎么回事啊
#6
articleId 是数字型啊
#7
--如果ArticleId为字符型,需要加单引号,如:
UPDATE Article as T SET ReviewNum =DCOUNT("*","Review","ArticleId='" & T.ArticleId & "'")
#8
我最终是这样写的
UPDATE Article AS T SET ReviewNum = NZ(DCOUNT("*","Review","ArticleId="+T.ArticleId+""),0)
可老是提示“不能在更新查询中更新全部记录”,说是类型转换失败 。请问是怎么回事啊
articleId 是数字型的啊,不用加'引号 就算我加了仍然有错
UPDATE Article AS T SET ReviewNum = NZ(DCOUNT("*","Review","ArticleId="+T.ArticleId+""),0)
可老是提示“不能在更新查询中更新全部记录”,说是类型转换失败 。请问是怎么回事啊
articleId 是数字型的啊,不用加'引号 就算我加了仍然有错
#9
提示错误如下:
microsoft access 不能在更新查询中更新全部记录
microsoft access 不能更新11个字段是因为类型转换失
败,不能更新0个记录是因为键值冲突,不能更新0个记录
是因为锁定冲突,不能更新0个记录是因为有效性规则冲突。
是否继续执行这个类型的操作查询?
如要忽略错误并且执行查询,请单击 “是”
关于冲突原因的解释,请选择“帮助”按钮。
#10
你的情况分二步:
1. 将统计数据放入一个临时表
select ArticleId,count(ArticleId) as n into tmp
from Review
group by ArticleId
2.更新表Article
update Article a,tmp b
set a.ReviewNum=b.n
where a.ArticleId=b.ArticleId
1. 将统计数据放入一个临时表
select ArticleId,count(ArticleId) as n into tmp
from Review
group by ArticleId
2.更新表Article
update Article a,tmp b
set a.ReviewNum=b.n
where a.ArticleId=b.ArticleId
#11
--先查询试试
select NZ(DCOUNT("*","Review","ArticleId="+T.ArticleId+""),0)
from Article AS T
#12
UPDATE Article SET ReviewNum =dCOUNT('*','Review','ArticleId=' & Article.ArticleId)
假设ID为数字型,上述SQL语句只能在ACCESS中使用
#13
根据错误提示信息,可以确定是数据类型导致。
如果你的'ArticleId'是数字型,去掉两侧的单引号。如果是字符型,需要有单引号。
如果你的'ArticleId'是数字型,去掉两侧的单引号。如果是字符型,需要有单引号。