用A表,去更新B表

xilaianzxsc 2014-04-21 02:16:52
VFP 9.0 + SQL

现有SQL表A,记录如下
dep_id depart_id
001 12
002 12
003 15
003 19
002 39


现有SQL表B,记录如下
dep_id depart_id biaoji
002 12 1
003 15 0
003 19 1
002 19 1
009 20 1
010 25 1

用A表的记录,去更新B表,要求如下:
A表里dep_id记录里有的,而B表里dep_id无此记录,则复制到B表去(举例:A表有001,B表没有,则将001那一行,复制到B表去)
A表里depart_id记录里有的,而B表里depart_id无此记录,则复制到B表去(举例:A表有39,B表没有,则将39那一行,复制到B表去)

B表dep_id里面有,而A没有.则删除B表里面的相应记录 (如:010那一行,B表有,而A表没有,则删除B表那一行记录)
B表depart_id里面有,而A没有.则删除B表里面的相应记录 (如:25那一行,B表有,而A表没有,则删除B表那一行记录)

我自己琢磨出来的命令如下:

insert into 表B (dep_id depart_id) select dep_id depart_id from 表A where dep_id not in (select dep_id from 表B)
insert into 表B (dep_id depart_id) select dep_id depart_id from 表A where depart_id not in (select depart_id from 表B)

DELETE from 表B WHERE 表B.user_id NOT in (select distinct user_id FROM 表A)
DELETE from 表B WHERE 表B.depart_id NOT in (select distinct depart_id FROM 表A)

我也没有把握我的命令,是不是全部正确.

但是,我运行结果是:所有数据,都双倍出现了. 这肯定是错误的.
错在哪?我也迷糊了

请老师指导
...全文
68 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xilaianzxsc 2014-04-21
  • 打赏
  • 举报
回复
谢谢老师的帮忙
xilaianzxsc 2014-04-21
  • 打赏
  • 举报
回复
和我想的一样。 我再自己琢磨一下。
WWWWA 2014-04-21
  • 打赏
  • 举报
回复
DELETE from qttb WHERE dep_id NOT in(select dep_id FROM qtta ) DELETE from qttb WHERE depart_id NOT in(select depart_id FROM qtta ) insert into qttb (dep_id,depart_id) select dep_id,depart_id from qtta where dep_id not in(select dep_id from qttb) insert into qttb (dep_id,depart_id) ; select dep_id,depart_id from qtta where depart_id not in (select depart_id from qttb)

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧