目的是想把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 |
运行之后居然报错"
操作必须使用一个可更新的查询。",刚开始以为是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表中"分类下产品个数"进行更新,可以使用如下语句
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。