SQL数据库查询去除重复的关键字是什么

SQL数据库查询去除重复的关键字是什么,第1张

distinct 关键字可从 select 语句的结果中消除重复的行。如果没有指定 distinct,将返回所有行,包括重复的行。

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。

数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。

数据库,简单来说是本身可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等 *** 作。

数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。

在经济管理的日常工作中,常常需要把某些相关的数据放进这样的"仓库",并根据管理的需要进行相应的处理。

例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。

有了这个"数据仓库"我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。

此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。

不建议直接删除,养成良好的习惯(删除更麻烦),以下是将去重后的数据转移到另一张表代码:

Insert into 表名(列名)select distinct 列名 from 表名

你可以按照去重的思路,删除重复数据

有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

1、对于第一种重复,比较容易解决,使用

select distinct from tableName

就可以得到无重复记录的结果集。

如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

复制代码代码如下:

select distinct into #Tmp from tableName

drop table tableName

select into tableName from #Tmp

drop table #Tmp

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

2、这类重复问题通常要求保留重复记录中的第一条记录, *** 作方法如下

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

复制代码代码如下:

select identity(int,1,1) as autoID, into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select from #Tmp where autoID in(select autoID from #tmp2)

首先是将数据库里边的重复记录删掉,我看网上有好多答案是这样的:

1 delete from people

2 where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

3 and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

但其实我每次运行这条语句都是行不通的,会报错:

SQL 错误 [1093] [HY000]: You can't specify target table 'test1' for update in FROM clause

javasqlSQLException: You can't specify target table 'test1' for update in FROM clause

去网上查过好像是说update以及delete *** 作没办法跟查询 *** 作一起做的,我看过有的更新的跟查询的一起做的好像是给查出来的那部分起个别名,然后进行更新就可以了,但是删除这个我起了别名也不对,不知道是我写错还是不行,我就跳过这个方法了。

我用的方法是:先查出数据库中的重复记录的数据中的一条,这个不难,很简单的,sql语句如下:

select from test1 where name in (select  name from test1  group  by  name   having  count(name) > 1)

and id in (select min(id) from  test1  group by name  having count(name)>1)

结果如下:

id |name |phont |

---|--------|-------|

1 |name22 |123 |

3 |name222 |123 |

5 |name2 |123123 |

8 |123 |123123 |

11 |name1 |123123 |

13 |111 |1231 |

14 |112 |1232 |

这些都是不重复的,换句话说都是要保留的,不被删掉的,而其余与这些结果中name相同的应该被删掉。

也就是说将上边那个sql语句id后边加一个not ,查出来的结果就是要删掉的:结果如下

id |name |phont |

---|--------|-------|

2 |name22 |123 |

4 |name222 |123 |

6 |name2 |123123 |

7 |name2 |NULL |

9 |123 |123123 |

10 |123 |123123 |

12 |name1 |123123 |

15 |111 |1233 |

16 |112 |1234 |

17 |111 |1235 |

18 |112 |1236 |

我把这些需要删掉的存到另外一个表里,然后我新建一个test2表,结构复制test1的结构就好了

1 CREATE TABLE `test2` (2   `id` int(11) NOT NULL AUTO_INCREMENT,3   `name` varchar(50) DEFAULT NULL,4   `phont` varchar(50) DEFAULT NULL,5   PRIMARY KEY (`id`)6 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

然后插入语句是:

1 insert into test2(2 select from testtest1 where name in (select  name from testtest1  group  by  name   having  count(name) > 1)

3 and id not in (select min(id) from  testtest1  group by name  having count(name)>1)

4 )

然后test2的表里的数据就是下图这样的:

那接下来做的就是删掉test1表里边与test2表的id相同的数据。

1 delete a from test1 a, test2 b where aid = bid ;

这样,test1里边的数据就变成了:

这样的结果就是完全不重复的,但是我还想要他们的id是连续的,而不是这样的断开的。

我的做法是将这个表的除掉id之外的所有字段查出插入到另外一个表test3中,当然,test3要设置id为自增主键,但是不插入id,让它自增,就连续了

当然要新建表test3啦,不过把上边新建的test2那个复制下来改名字为test3就好啦。

然后插入:

1 insert into test3(name, phont)2 (select name, phont from test2)

test3表里的结果就是:

这样就可以把test3改成你想要的名字,然后删掉test1和test2了,大功告成~

不过感觉还可以就是将已经删掉重复数据的表test1的数据全都导出来,一般的数据库连接工具都有这样的功能,导成sql格式的,然后新建一个表,比test1多增一个自增主键字段叫NewId字段,但是Id字段不能再自增了,然后将导成的sql文件导入,不过那个sql文件可能要编辑一下,改一下自增主键id变为普通的字段什么的,然后到新表了之后,删掉id字段,修改NewId为Id,应该也可以,但是这个方法我没试过,原先预想过要这么做但是没有这么做,估计以后可以试试,但是感觉两种的麻烦程度都差不多啊,但是如果将sql语句写下来之后可能还是第一种方法比较快一点吧。

如何查找和删除数据库中的重复数据

以Excel2010版本为例,可以直接使用数据→删除重复项的功能来实现删除重复数据。

此功能Excel2007及以上版本均可,WPS中也有这样的功能。另外还可以使用公式法去重复,常用的函数是Countif函数。

以上就是关于SQL数据库查询去除重复的关键字是什么全部的内容,包括:SQL数据库查询去除重复的关键字是什么、mysql数据库中怎么删除重复的数据、ACCESS数据库内如何去除某字段重复记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存