想不清楚这句sql如何写?各位大侠帮个忙,谢谢(50分)

  • 主题发起人 主题发起人 oldppp
  • 开始时间 开始时间
O

oldppp

Unregistered / Unconfirmed
GUEST, unregistred user!
table1: id,aa,bb,cc,dd
table2: aa,bb,cc,dd,ee

想从table2中把不在table1中的记录insert到table1中,使得table1中的内容(除了id
以外)全部与table2的记录相同。
我的写法:

insert into table1 (aa,bb,cc,dd)
select table2.aa,rsk2.bb,table2.cc,table2.dd from table1,table2
where not (table1.aa=table2.aa and table1.bb=table2.bb and
table1.cc=table2.cc and table1.dd=table2.dd)

结果其大无比,明显不对!各位给改改,谢谢
 
table2 多加一个 id 就简单了
 
table2中就是因为没有id才感觉头痛的。
table1中已经有部分记录与table2中的完全相同了,如果现在在table2中加id,如何保证
那些相同的记录上的id值一样呢?

各位再想想。
 
table1.aa=table2.aa and table1.bb=table2.bb and
table1.cc=table2.cc and table1.dd=table2.dd
将aa,bb,cc,dd连成一个字符串试试??
 
insert into table1 (aa,bb,cc,dd)
select distinct table2.aa,rsk2.bb,table2.cc,table2.dd from table1,table2
where NOT (table1.aa=table2.aa and table1.bb=table2.bb and
table1.cc=table2.cc and table1.dd=table2.dd)
在插入的结果集中加 Distinct就可以了。

 
没有办法
 
真的没有办法吗?
 
可以使用临时表,否则再插入的时候会出现自我复制的情况,也可以写一个小Procedue,
里面声明一个静态的Cursor就OK了
 
你那是谁设计的库表结构,这么差劲?没有一个好的数据库设计把你能累死!
 
怎么写?我用的是accsee数据库,这个过程怎么写呢?
 
好像曾有过类似问题。用Exists子句,如:
INSERT INTO table1 (aa,bb,cc,dd)
SELECT aa, bb, cc, dd FROM table2 AS T2
WHERE NOT EXISTS (SELECT 1 FROM table1 AS T1
WHERE ((T1.aa = T2.aa) AND (T1.bb = T2.bb)
AND (T1.cc = T2.cc) AND (T1.dd = T2.dd))
意即:将table2中不与table1中的aa,bb,cc,dd字段同时相等的记录插入table1中。
 
楼上老兄高手也!发分
 
接受答案了.
 
后退
顶部