当前位置:主页>delphi技巧/代码下载> 文章内容

急:两个ACCESS数据库有两张相同结构的表的更新问题!

发布时间:2010-05-01 | QQ免费站
1楼: 两个ACCESS数据库有两张相同结构的表,表的主键是由char(8)+datetime组成,
如何用一条SQL语句完成向A表中插入B表没有的记录(指主键值不同的记录),
关键是:主键是由char(8)+datetime两个字段组成!
千万别说用循环或者说先删除A表的所有记录,然后整个B表插入A表!
因为:1.数据量较大用循环太耗时间;
2.A表中主键值与B表中相同的记录,其它字段值不同,还需根据情况更新!

2楼: 用如下语句可以实现:
insert into t2() select * from t1 where char+datetime not in(select chat+datetime from t2)

------------------
select * from t1 where char+datetime not in(select chat+datetime from t2)
是用来查询出表2中没有的数据

3楼: insert into A select * from B where B.id<>A.id ......
根据需要改条件即可

4楼: to hmjku:
谢谢你,我试试!
在SQLSever2000中有:Case 字段名 when a then b when c then d end;
在ACCESS中有相似语句吗?
我是想用B表更新A表相同主键值记录时,要判断A表字段1值若是a,B表相同字段1值若是b,那么更新A表字段1值为c,就是不同组合出现若干结果!

5楼: 我试了不行呀?
主键是由char(8)+datetime两个字段组成!-- 一个是字符型另一个是日期型数据

字串8


程序运行提示:'溢出'!
我的SQL语句如下:
INSERT INTO table1 SELECT f1,f2,f3,f4 FROM table2 IN 'c:\data\b.mdb' WHERE f1+f2 NOT IN (SELECT f1+f2 FROM table1)

6楼: 把两个字段都转成char然后sql出来,要不然当然类型不对了

7楼: to hmjku:
再帮帮忙,我不知道ACCESS里日期转换成字符型用什么函数?
能给我贴出来吗?

8楼: 转换函数同SQL的一样吧,你试试,检检SQL帮助里有。

9楼: SELECT 'The due date is ' + CAST(pubdate AS varchar(128)) From ........如提取进销存图标

10楼: CAST函数在ACCESS中好像不好用

11楼: 你试试啊

12楼: 就是试了,不好用!
谁来帮帮我!!

13楼: 转换成字符用datetostr看看行不??

14楼: case 语句在access中对应的是ifthen
转换函数好象是CDATE吧,具体忘了,你查一下MSDN就有了

15楼: 日期转换为字符请用format函数!
select * from t1 where char+format(datetime) not in(select chat+format(datetime) from t2)
你试试肯定可以!
别忘了买单!

16楼: 多人接受答案了。