在SQL中怎么删除两个表中相同的数据

在SQL中怎么删除两个表中相同的数据,第1张

1,首先创建一个表,并在表中插入重复的记录,如下图所示

2,插入好以后就看见表中已经有重复的数据了,如下图所示。

3,接下来在删除之前我们记得一定先备份,如下图所示。

4,然后排除重复的记录可以通过distinct字段设置,如下图所示,然后将去重的数据插入到新表中。

5,接着看到数据表下面多出来一个刚建的新表,如下图所示。

6,最后打开新表,就可以看到重复的数据都没有了,如下图所示。

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

在SQLserver中 怎样将两个库中同样结构的两个表的数据进行合并

数据有可能存在重复

表结构完全相同

解析:

可以将两个表中的数据提出来(重复的过滤)写入一个临时表中,清空这两个表,再将临时表的数据回写入这两个表里面。为防出错,请先备份数据库再 *** 作。

如:

第一步:select * from 数据库名1..表名1 into #临时表名

第二步:insert into #临时表名 (字段名1,字段名2……) (select a.字段名1,a.字段名2…… from 数据库名2..表名2 a,数据库名1..表名1 b where 数据库名2..表名2.主键字段名<>数据名1..表名1.主键字段名 )

第三步:delete from 数据库名1..表名1

第四步:delete from 数据库名2..表名2

第五步:insert into 数据库名1..表名1 from #临时表

第六步:insert into 数据库名2..表名2 from #临时表

第七步:drop table #临时表

注:如果两个表中没有主键,你只有在第二条语句中where 项中一个字段一个字段地添加条件判断了。

SQL语句如下:

SELECT * from TABLE1

full join TABLE2 on  TABLE1.xingming = TABLE2.xingming

where

TABLE1.xingming is null or TABLE2.xingming is null

分析:

1、首先得出两个表的并集

注:full join :存在匹配,匹配显示;同时,将各个表中不匹配的数据与空数据行匹配进行显示。可以看成是左外连接与右外连接的并集。

图中结果左侧两列为TABLE1,右侧两列为TABLE2。

前三条记录表示TABLE1和TABLE2都有的数据。

TABLE1项为NULL的记录说明TABLE2中无相同项。

同理,TABLE2项为NULL的记录说明TABLE1中无相同项。

下面,只需要设置筛选条件,过滤出所需记录。

2、设置过滤条件,得到结果

从结果中可以看出,表1中的赵二在表2中没有相同xingming的记录。

表2中的刘六在表1中没有相同xingming的记录。

本题还有其它多种解法,此处列出比较好理解的一种。

扩展资料:

使用自联接

即使表在数据库中没有自反关系,也可将它与自身联接。 例如,可使用自联接查找生活在同一城市的作者对。

与任何联接一样,自联接至少需要两个表。 不同之处在于,不是向查询中添加第二个表,而是添加同一个表的第二个实例。 这样,可将表的第一个实例中的列与第二个实例中的同一列相比较,这样可相互比较列中的值。 查询和视图设计器为表的第二个实例分配一个别名。

例如,如果要创建自联接来查找居住在 Berkeley 内的所有作者对,可将表的第一个实例中的 city 列与第二个实例中的 city 列相比较。 所得到的查询可能类似于:

SELECT

        authors.au_fname,  authors.au_lname, authors1.au_fname AS Expr2,      authors1.au_lname AS Expr3     

FROM  authors INNER JOIN  authors authors1 ON authors.city  = authors1.city     

WHERE

        authors.city = 'Berkeley'

参考资料:

百度百科.full join


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6735729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存