• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >数据库其它 > 数据库删除完全重复和部分关键字段重复的记录

数据库删除完全重复和部分关键字段重复的记录

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了php读取数据库字段,数据库字段类型,数据库添加字段,数据库字段,数据库字段命名规则等相关知识,希望本文的分享对您有所帮助
1、第一种重复很容易解决,不同数据库环境下方法相似: 

以下为引用的内容:
Mysql 

create table tmp select distinct * from tableName; 

drop table tableName; 

create table tableName select * from tmp; 

drop table tmp; 


SQL Server 

select distinct * into #Tmp from tableName; 

drop table tableName; 

select * into tableName from #Tmp; 

drop table #Tmp; 

Oracle 

create table tmp as select distinct * from tableName; 

drop table tableName; 

create table tableName as select * from tmp; 

drop table tmp; 



发生这种重复的原因是由于表设计不周而产生的,增加唯一索引列就可以解决此问题。 

2、此类重复问题通常要求保留重复记录中的第一条记录,操作方法如下。 假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集 

Mysql 

以下为引用的内容:
alter table tableName add autoID int auto_increment not null; 

create table tmp select min(autoID) as autoID from tableName group by Name,Address; 

create table tmp2 select tableName.* from tableName,tmp where tableName.autoID = tmp.autoID; 

drop table tableName; 

rename table tmp2 to tableName; 

SQL Server 

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

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

drop table tableName; 

select * into tableName from #Tmp where autoID in(select autoID from #Tmp2); 

drop table #Tmp; 

drop table #Tmp2; 

Oracle 

DELETE FROM tableName t1 WHERE t1.ROWID > (SELECT MIN(t2.ROWID) FROM tableName t2 WHERE t2.Name = t1.Name and t2.Address = t1.Address); 

 


说明: 

1. MySQL和SQL Server中最后一个select得到了Name,Address不重复的结果集(多了一个autoID字段,在大家实际写时可以写在select子句中省去此列) 

2. 因为MySQL和SQL Server没有提供rowid机制,所以需要通过一个autoID列来实现行的唯一性,而利用Oracle的rowid处理就方便多了。而且使用ROWID是最高效的删除重复记录方法。
</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 由拖库攻击谈口令字段的加密策略(数据库加密)
  • 数据库删除完全重复和部分关键字段重复的记录

相关文章

  • 2017-12-17漫谈16S的前世今生
  • 2017-05-11数据库触发器(Trigger)的一点使用心得
  • 2017-05-11PostgreSQL数据库服务端监听设置及客户端连接方法教程
  • 2017-05-11在SQL Server和Oracle中创建job
  • 2017-05-11MDAC2.8 安装问题与解决方法
  • 2017-05-11mysql、mssql及oracle分页查询方法详解
  • 2017-05-11如何解决VisualSVN Server 安装提示错误 Repositories is not a valid short file name
  • 2017-05-11SQL中代替Like语句的另一种写法
  • 2017-05-11NoSQL 数据库你应该了解的 10 件事
  • 2017-05-11OLEDB和ODBC的区别(优缺点)

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 数据库查询优化(主从表的设计)
    • 关于ADOX的相关知识
    • 设置CA证书来强化PostgreSQL的安全性的教程
    • 数据库 左连接 右连接 全连接用法小结
    • SQL SERVER 里的错误处理(try catch)
    • bi数据仓库的模型设计
    • 如何判断a、b、c三个字段同时为0则不显示这条数据
    • 很全的SQL中文解释代码第1/2页
    • sql注入之必备的基础知识
    • 数据库建立索引的一般依据小结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有