用sql语句比对2个表A和表B,并将比对出不同的数据存放在表C中,表A,B,C所以的列都是一样的,跪求。。。。

 我来答
badkano
2013-04-08 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144777 获赞数:885357
团长

向TA提问 私信TA
展开全部
都几个列啊,列名都什么啊?要不没法写呀
而且不一样的,是A与B只要不一样都插入C里吗?还是只插A里有的,B里无的;或者B里有的,A里无的?
哎我,楼下那大哥,我估计人家用的不是oracle
----补充----
假设三个表都有字段1,字段2两个字段
你要插入的是,A,B都完全不相同的数据
insert into c
select a.字段1,a.字段2 from a,(select a.字段1,a.字段2 from a,b where a.字段1=b.字段1 and a.字段2=b.字段2) as d
where a.字段1<>d.字段1 and a.字段2<>d.字段2
union all
select b.字段1,b.字段2 from a,(select a.字段1,a.字段2 from a,b where a.字段1=b.字段1 and a.字段2=b.字段2) as d
where a.字段1<>d.字段1 and a.字段2<>d.字段2
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-09
展开全部
不知道你什么数据库。
我就简单说一下 Oracle 的例子

Oracle 里面, 有个 MINUS, 用于返回第一个表中有、第二个表中没有的数据

你可以执行

INSERT INTO C
SELECT * FROM A MINUS SELECT * FROM B;

INSERT INTO C
SELECT * FROM B MINUS SELECT * FROM A;

就可以了。

如果你的数据库是 DB2 、 SQL Server 或者 SQLite 或者 PostgreSQL

可以使用 INTERSECT 来 替换掉那个 MINUS

也就是

INSERT INTO C
SELECT * FROM A INTERSECT SELECT * FROM B;

INSERT INTO C
SELECT * FROM B INTERSECT SELECT * FROM A;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuguo1987524
2013-04-08 · 超过16用户采纳过TA的回答
知道答主
回答量:97
采纳率:0%
帮助的人:50万
展开全部
create c as select * from a b where a. != b.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tj_angela
2013-04-08 · TA获得超过7529个赞
知道大有可为答主
回答量:6797
采纳率:75%
帮助的人:2496万
展开全部
inset into C
(select * from A minus select * from B)
union all
(select * from B minus select * from A)
;
commit;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式