• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

请教一句SQL,谢谢。

sqllong 2008-04-09 12:17:20
表结构:
tableA字段:bz,jh,rq
tableB字段:bz,jh,rq

要求:根据条件,用tableB的bz字段更新tableA的bz的值;
问题:以下代码在SQL Server 2000 下能顺利执行,但把代码改写为Access下是SQL就报错;
update tableA 
set tableA.bz=tableB.bz
from tableA inner join tableB on tableA.jh = tableB.jh and tableA.rq = tableB.rq and
tableB.rq>='2008-4-1' and tableB.rq<='2008-4-9'


Access下是SQL语句:
update tableA 
set tableA.bz=tableB.bz
from tableA inner join tableB on tableA.jh = tableB.jh and tableA.rq = tableB.rq and
tableB.rq>=#2008-4-1# and tableB.rq<=#2008-4-9#


报错内容:语法错误(操作符丢失)

谢谢大家了,在线~~~~
...全文
86 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jinjazz 2008-04-09
Access中不允许用where   tableA.fieldA   =   TableB.fieldA   来做update的连接,这是T-sql的语法,必须把t-sql的语法转成Asni的语法,用   join   来做。   

对查询结果关联,access必须把查询分成两部分,最后把临时表删:
-------------------------------------------------------------------------
select fid,sum(sl) as sumsl from aa into bb where bs=1 group by fid;

update aa inner join bb
on aa.id=bb.fid
set aa.sl=bb.sumsl

drop table bb
回复
chuifengde 2008-04-09
update tableA,tableB
set tableA.bz=tableB.bz
where tableA.jh = tableB.jh and tableA.rq = tableB.rq and
tableB.rq>=#2008-4-1# and tableB.rq<=#2008-4-9#
回复
xiaomeixiang 2008-04-09
UPDATE tableA SET bz = dsum("bz","tableB","rq>=#2008-4-1# and rq<=#2008-4-9# AND jh='" & tableA.jh & "' AND rq=#" & tableA.rq & "#");
回复
正宗老冉 2008-04-09
楼上正解。

ANSI-SQL 92
回复
xiaomeixiang 2008-04-09
数值型才能用DSUM,用DLookUp比较好,更正下:

UPDATE tableA SET bz = dlookup("bz","tableB","rq>=#2008-4-1# and rq <=#2008-4-9# AND jh='" & tableA.jh & "' AND rq=#" & tableA.rq & "#");
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-09 12:17
社区公告
暂无公告