SQL语句技巧之去除重复行

摘要:
要从表中删除重复的行数据,可以立即考虑使用DISINTCT关键字,但DISINTCT只能删除表中所有列都相同的行。如果需要删除表中具有重复字段的行,应该怎么做?通过多年的数据库编译经验,我编写了以下方法供您参考和使用。

去除表中重复行数据,可能大家立马就想到的是用DISINTCT关键字,但DISINTCT只能是去除表中所有列都相同的行,若碰到需要去除表中多个字段重复的行(即:部份相同,部份不相同),那么该如何做呢?我通过多年数据库编写经验,整理了如下方法,供大家参考和使用。

方法1:适用于返回较少字段

select F1,F2,F3,MAX(F4) FROM TABLENAME GROUP BY F1,F2,F3

方法2:适用于返回行所有字段,需指定不相同的字段

select * FROM TABLENAME T where F4=(select MAX(F4) from TABLENAME where T.F1=F1 and T.F2=F2 and T.F3=F3)

方法3:适用于返回行所有字段,需指定不相同的字段【找出需要去除的行】

SELECT T1.* FROM TABLENAME AS T1,(SELECT F1,F2,MAX(F3) AS F3 FROM TABLENAME GROUP BY F1,F2 HAVING COUNT(*)>1) AS T2
WHERE T1.F3<T2.F3 AND T1.F1=T2.F1 AND T1.F2=T2.F2

原文地址:http://www.zuowenjun.cn/post/2014/08/02/10.html

免责声明:文章转载自《SQL语句技巧之去除重复行》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信小程序 云开发数据库查询为空的原因老白的物联网学习路线下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

解决cookie跨域访问

如果用户在登录(记录用户上下文信息)后在浏览器客户端上写入cookie,则只能访问与创建cookie的页面相同目录或创建cookie页面的子目录中的网页。这是因为cookie可以由其路径下的页面访问。然后,如果您想在域a中生成一个可以被域a和域B访问的cookie,则需要将cookie的域设置为.test.com;...

sqlserver 计算 百分比

selectltrim+'%'As百分比NUMERIC(P,S)P的默认值是:38S的默认值是:-84~127numeric(a,b)函数有两个参数,前面一个为总的位数,后面一个参数是小数点后的位数,例如numeric(5,2)是总位数为5,小数点后为2位的数,也就是说这个字段的整数位最大是3位。...

dbeaver 驱动安装

一、背景:在Windows10安装dbeaver数据库连接工具,点“测试连接”的时候出现报错如下:ErrorresolvingdependenciesMavenartifact'maven:/mysql:mysql-connector-java:RELEASE'nofound经网上查询是dbeaver驱动无法下载的问题。二、解决方法:打开“窗口”-˃“首选项...

MongoDB用户与角色管理

MongoDB默认不启用访问控制。管理员可以在配置文件授权参数中使用--auth-in restart或security来启用访问控制。(4) MongoDB在每个数据库上提供内置的DatabaseUserRoles和DatabaseAdministrationRoles。MongoDB仅为管理数据库提供所有内置角色。此角色没有用户和角色管理权限。(4.4)...

CentOS7上使用history删除部分历史记录

使用history命令删除登录后创建的历史记录,但保留原始记录。如果未执行history命令,则直接使用history-r命令将文件中的历史刷新到此处的缓存中,并且不会保存以前操作的记录。修改后,执行:history-c以清除当前会话历史中的历史缓存-r以读取~/。bash_您可以看到历史文件中的历史记录已在缓存中更新。...

easyexcel导出两种方式response返回文件流下载和保存到服务器返回下载链接

1、response方式返回excel文件流@GetMapping("/exportExcel")publicvoidexportExcel(@RequestParam(value="menu")Stringmenu,@RequestParam(value="dwflglId")intdwflglId,@RequestParam(value="qjCode"...