微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Access 连表查询语法

 

目的是想把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)  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐