a,b两个表进行比较,把b表中不重复的行插入a表.

the_pain 2008-12-13 02:37:23
create table a
(
id int ,
name varchar(10)
)
insert into a
values(1,'bill')
insert into a
values(1,'bill')

create table b
(
id int ,
name varchar(10)
)
insert into b
values(1,'bill')
insert into b
values(1,'bill')
insert into b
values(2,'amount')
insert into b
values(3,'rose')


select * from a
select * from b
...全文
148 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
htl258_Tony 2008-12-26
  • 打赏
  • 举报
回复
高人真多
等不到来世 2008-12-13
  • 打赏
  • 举报
回复
insert a
select *
from b
where checksum(*) not in (select checksum(*) from a)
zjcxc 元老 2008-12-13
  • 打赏
  • 举报
回复
如果是 sql server 2005 或者更高的版本
并且, 插入的数据是 a 表中不存在的, 并且b表中重复的数据只插入一条
可以用下面的语句, 这样不用一个列一个列的写

INSERT a
SELECT * FROM b
EXCEPT SELECT * FROM a
claro 2008-12-13
  • 打赏
  • 举报
回复
Insert into a
select distinct id,[name]
from b
where not exists (select 1 from a
where a.id=b.id)
the_pain 2008-12-13
  • 打赏
  • 举报
回复
谢了.
zjcxc 元老 2008-12-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 the_pain 的回复:]
那如果a的字段很多的话,where 语句后面是不是非要这样a.id=b.id and .. and ..and. and..
有简洁一点的么?
[/Quote]

是要这样
the_pain 2008-12-13
  • 打赏
  • 举报
回复
那如果a的字段很多的话,where 语句后面是不是非要这样a.id=b.id and .. and ..and. and..
有简洁一点的么?
zjcxc 元老 2008-12-13
  • 打赏
  • 举报
回复
-- 如果只要求插入 a 表中不存在的
INSERT a
SELECT
id, name
FROM b
WHERE NOT EXISTS(
SELECT * FROM a
WHERE a.id = b.id
AND a.name = b.name);
zjcxc 元老 2008-12-13
  • 打赏
  • 举报
回复
INSERT a
SELECT DISTINCT -- 去重复
id, name
FROM b
WHERE NOT EXISTS( -- 如果还要求不包含 a 表中已经存在的
SELECT * FROM a
WHERE a.id = b.id
AND a.name = b.name);
zjcxc 元老 2008-12-13
  • 打赏
  • 举报
回复

INSERT a
SELECT DISTINCT -- 去重复
id, name
FROM b
the_pain 2008-12-13
  • 打赏
  • 举报
回复
就是把b表中的第3,4条纪录插入a表

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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