设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2818|回复: 14
打印 上一主题 下一主题

[其它] [求助]为什么update嵌套select会报这样的错

[复制链接]
跳转到指定楼层
1#
发表于 2006-11-16 15:47:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
update [实装率] set [实装率].实际用户数 = (SELECT count(*) FROM [2006年10月用户上网记录] WHERE([2006年10月用户上网记录].接入地址 = '220.177.224.14'))
where [实装率].主机名 ='aaa';

我用一条这样的语句,结果总是报"操作必须使用一个可更新的查询"

在网上查了一下,报这样的错是因为写入权限不够

但如果将这两将语句分解,则都正常运行.

update [实装率] set [实装率].实际用户数 = 520

where [实装率].主机名 ='aaa';

SELECT count(*)

FROM [2006年10月用户上网记录]

WHERE([2006年10月用户上网记录].接入地址 = '220.177.224.14';

结果是520

希望各位不吝赐教.

[此贴子已经被作者于2006-11-16 8:10:14编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-11-16 16:41:00 | 只看该作者
以下是引用aixiang225858在2006-11-16 7:47:00的发言:


update [实装率] set [实装率].实际用户数 = (SELECT count(*) FROM [2006年10月用户上网记录] WHERE([2006年10月用户上网记录].接入地址 = '220.177.224.14'))
where [实装率].主机名 ='aaa';

我用一条这样的语句,结果总是报"操作必须使用一个可更新的查询"

在网上查了一下,报这样的错是因为写入权限不够

但如果将这两将语句分解,则都正常运行.

update [实装率] set [实装率].实际用户数 = 520

where [实装率].主机名 ='aaa';

SELECT count(*)

FROM [2006年10月用户上网记录]

WHERE([2006年10月用户上网记录].接入地址 = '220.177.224.14';

结果是520

希望各位不吝赐教.

NO,是JET SQL不支持这种写法

TRY:

update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 = '220.177.224.14'")  where [实装率].主机名 ='aaa';
3#
 楼主| 发表于 2006-11-16 16:44:00 | 只看该作者
忘了说,我用的是office2003中的access
4#
发表于 2006-11-16 16:49:00 | 只看该作者
你将兼容SQL SERVER勾上试试。
5#
 楼主| 发表于 2006-11-16 16:52:00 | 只看该作者
刚试了一下,果然可以,太感谢了.再请问一下,如果我想同时根据多条件同时更新几条记录中的数据.应该怎样操作.

例如:

update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 = '220.177.224.14'")  where [实装率].主机名 ='aaa';





update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 = '220.177.224.15'")  where [实装率].主机名 ='bbb';



想一次性实现多个update.
6#
发表于 2006-11-16 16:56:00 | 只看该作者


try:

update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 in '220.177.224.14','220.177.224.15'")  where [实装率].主机名 in('aaa','bbb');
7#
 楼主| 发表于 2006-11-16 17:02:00 | 只看该作者
刚试了一下,提示"未知".

刚才你说兼容SQL SERVER勾上应该在哪里勾.?
8#
发表于 2006-11-16 17:06:00 | 只看该作者
update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 in( '220.177.224.14','220.177.224.15'")  where [实装率].主机名 in('aaa','bbb');

在表、查询中
9#
 楼主| 发表于 2006-11-16 17:20:00 | 只看该作者
上面的语句少打一个括号,我加上以后能运行,但给出的结果是aaa和bbb的实际用户数同时更新为'220.177.224.14'和'220.177.224.15'的计数值之和



update [实装率] set [实装率].实际用户数 = DCOUNT("*","[2006年10月用户上网记录]", "接入地址 in( '220.177.224.14','220.177.224.15')")  where [实装率].主机名 in('aaa','bbb');

[此贴子已经被作者于2006-11-16 9:20:59编辑过]

10#
发表于 2006-11-16 17:28:00 | 只看该作者
那就只能分开写SQL语句了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-11 00:47 , Processed in 0.093987 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表