当前位置: 首页 > 编程笔记 >

浅谈sql数据库去重

甘永春
2023-03-14
本文向大家介绍浅谈sql数据库去重,包括了浅谈sql数据库去重的使用技巧和注意事项,需要的朋友参考一下

  关于sql去重,我简单谈一下自己的简介,如果各位有建议或有不明白的欢迎多多指出。

  关于sql去重最常见的有两种方式:DISTINCT和ROW_NUMBER(),当然了ROW_NUMBER()除了去重还有很多其他比较重要的功能,一会我给大家简单说说我自己在实际中用到的。

  假如有张UserInfo表,如下图:

 
   
  现在我们要去掉完全重复的数据:SELECT DISTINCT * FROM dbo.UserInfo结果如下图:

  

  但是现在有个新的需求,要把名字为‘张三'的去重,也就是相同名字的只要一条数据,要是还用DISTINCT的话就很麻烦了。想必聪明的你已经想到此时是ROW_NUMBER()登场的时候了吧。我们只需执行这样一句话就万事大吉了SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY Name ORDER BY ID) AS RowId,* FROM dbo.UserInfo) x WHERE x.RowId=1;虽然看起来有点长,但是很容易理解。现在执行的结果如下图:

  现在名字重复的数据只取了一条,而且是根据sql语句中的ORDER BY ID取的第一条,其中PARTITION BY后面跟的就是去重的字段,也许你想问为什么要加WHERE x.RowId=1呢,现在我们不加这个条件看看结果如何:SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY Name ORDER BY ID) AS RowId,* FROM dbo.UserInfo) x,如下图:

  

  现在我们已经看到,如果不加条件会把所有数据都查出来,所以RowId=1的数据就是去重后的数据;

  ROW_NUMBER()除了可以去重还可以得到表的行号,现在我们只需一下语句:SELECT ROW_NUMBER() OVER(ORDER BY ID) AS RowNum,* FROM dbo.UserInfo,结果如下图:

  

  得到了所有的数据,而且还得到了每条数据的行号,其中数据的顺序可以根据ORDER BY ID调节,也就是说不去重的话就不用加PARTITION BY Name了,此功能在分页中用的也比较多,假如每页15条数据,分页时直接加条件RowNum Between 1 AND 15就行了。孤狼发表的博客很少,平时也比较懒,希望对大家有用。

 类似资料:
  • 本文向大家介绍浅谈ADO.NET数据库脚本,包括了浅谈ADO.NET数据库脚本的使用技巧和注意事项,需要的朋友参考一下 这次我使用ADO.NET来插入一条数据,到数据库中。主用到存储过程。我不想每次都是用SQL文本的形式了,那样始终没有进步~~~ 下面首先,我把我这次练习要用到的数据库脚本,贴出来: 接着大家选中刚才执行脚本,创建好的数据库,然后使用我下面的数据,向数据库表里面添加数据吧 说明一下

  • 本文向大家介绍浅谈PHP的数据库接口和技术,包括了浅谈PHP的数据库接口和技术的使用技巧和注意事项,需要的朋友参考一下 1、php支持哪些数据库(拥有哪些数据库接口) Adabas D ,InterBase ,PostgreSQL ,dBase ,FrontBase ,SQLite ,Empress ,mSQL ,Solid ,FilePro(只读),Direct MS-SQL ,Sybase ,

  • 本文向大家介绍浅谈MySQL数据库的备份与恢复,包括了浅谈MySQL数据库的备份与恢复的使用技巧和注意事项,需要的朋友参考一下 一、MySQL 常见的备份方式 1. 直接拷贝数据库文件(物理拷贝) 2. 使用 mysqldump 工具备份 3. 使用 mysqlhotcopy 工具备份 4. 使用 mysql 的主从同步复制,实现数据实时同步备份 二、MySQL 物理数据文件结构介绍 1. 日志文

  • 本文向大家介绍浅谈如何使用vb.net从数据库中提取数据,包括了浅谈如何使用vb.net从数据库中提取数据的使用技巧和注意事项,需要的朋友参考一下 1.设置从Model中的Sub Main 启动 2.程序结构 3.Model1 4.FormStudentSysMain.vb 5.FormSearchStudent.vb 6.运行结果 到此这篇关于浅谈如何使用vb.net从数据库中提取数据的文章就介

  • 本文向大家介绍浅谈Python中的数据类型,包括了浅谈Python中的数据类型的使用技巧和注意事项,需要的朋友参考一下 数据类型: Float/Int: 运算符: / — 浮点运算除  // — 当结果为正数时,取整; 11//5 =2; 11//4 = 2 当结果为负数时,向下取整;-11//5=-3; -11//4=-3 当分子分母都是float,结果为float型 ** —  计算幂; 11

  • 本文向大家介绍浅谈PHP中JSON数据操作,包括了浅谈PHP中JSON数据操作的使用技巧和注意事项,需要的朋友参考一下 JSON,全称是JavaScript Object Notation。它是基于JavaScript编程语言ECMA-262 3rd Edition-December 1999标准的一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。跟XML相类似,它独立语言,在跨平台数据传输