Access 连表查询语法

在尝试将Access中的b表img字段更新到a表时遇到问题,发现Access使用Jet-SQL语法不支持特定的查询方式。正确的更新语法是通过设置条件来实现。此外,还介绍了如何使用DCOUNT函数更新A表中分类下产品个数的示例,适用于产品分类和详细信息表之间的数据同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

目的是想把b表的img字段内容更新到a表的img字段上,没想到sql的语法在access里竟然不支持!

update [member_inf] set [img] =(select [img] from [img] where [id]=1)


 

where [id]=1  提示不可更新字段

百度之后才知道access用的Jet-SQl,SqlServer用的是T-SQl.

 

 

正确语法:

UPDATE A, B

SET a.x = B.y, ...

WHERE a.z = b.z

[AND a.z='']


 

 

我是这样写的,测试可以

update [member_inf] as t1,[img] as t2
set t1.[img]=t2.[img]
where
    t1.[id]= t2.[id] and t1.[id]=1



 

 

今天帮朋友写一个小网站的程序,数据库用的ACCESS,因为需要将某个类下的子类个数更新到该类的Child字段,于是我写了这样一个查询

Update tabClasss set Child=(select count(0) from  TabClass where parentId=2) where id=2

运行之后居然报错"操作必须使用一个可更新的查询。",刚开始以为是SQL写错了,但仔细检查了几遍也没有什么错啊,拿到ACCESS的查询中执行,还是报同样的错误.想来想去看来只能把SQL拆成两句写了.于是闲着没事,翻了一下ACCESS的内置函数表,看到几个有趣的函数,DFirst,DLast,DCount ,DMax,DMin呵呵,ACCESS虽不支持子查询但提供了很多有用的内置函数来弥补,于是上面的问题就迎刃而解了,对应的SQL如下
Update TabClass set Child=DCOUNT('0',' TabClass', 'parentId=2') where id=2

 

 

=====2011.2.17日补充===========

今天又碰到类似的情况,比如有两个表,一个是产品分类表 A(ID,分类名,分类下产品个数) ,另一个是产品详细表 B(ID,分类ID,产品名),现在想把A表中"分类下产品个数"进行更新,可以使用如下语句

update A  set  A.分类下产品个数=DCOUNT('0','B', '分类ID=' & A.id 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值