急:两个ACCESS数据库有两张相同结构的表的更新问题!
如何用一条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楼: 多人接受答案了。