`

SQL语句,重复字段记录过滤

阅读更多
--------- 建表
CREATE TABLE TABLE_A
(A DATE,
B INTEGER,
C VARCHAR2(10),
D VARCHAR2(10)
) 
--------- 测试数据
INSERT INTO TABLE_A VALUES(TO_DATE('2001-1-1','YYYY-MM-DD'),'123','张三','备注');
INSERT INTO TABLE_A VALUES(TO_DATE('2001-1-1','YYYY-MM-DD'),'123','李四','备注');
INSERT INTO TABLE_A VALUES(TO_DATE('2002-1-1','YYYY-MM-DD'),'123','张三','备注');
INSERT INTO TABLE_A VALUES(TO_DATE('2003-1-1','YYYY-MM-DD'),'123','李四','备注');
COMMIT;
 

--------- SQL
SELECT A,
       B,
       C,
       D
  FROM (SELECT TABLE_A.*,
               ROW_NUMBER() OVER(PARTITION BY C ORDER BY A DESC) AS R
          FROM TABLE_A)
 WHERE R <= 1  ----- 可以用 R<= N来确定取前N条记录


----------  结果
A    B    C    D
2003-1-1    123    李四    备注
2002-1-1    123    张三    备注

 

几点说明:

上面的sql语句中用到了内嵌查询select from select的形式:

 

select * from (select column_name from table_name ) 

 

row_number() over()函数的用法,over主要是给出条件。

 

PARTITION 为分类

ORDER为排序

分享到:
评论

相关推荐

    SQL语句大全

     sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"  sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"  sql="select top 10 * from 数据表 where 字段...

    sqlserver2005 自带的工具对 表的备注 和 字段的备注说明维护起来非常麻烦,而且不方便显示表或字段的备注信息,而一般开发人员很看重表和字段的备注。

    sqlserver2005 自带的工具对 表的备注 和 字段的备注说明维护起来非常麻烦,而且不方便显示表或字段的备注信息,而一般开发人员很看重表和字段的备注。 为此,我作了一个 sqlserver2005 的小工具,特点: 1.能够对...

    MYSQL常用命令大全

    例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为96.5. mysql&gt; insert into MyClass values(1,'Tom',96.45),(2,...

    过滤sql字符串

    过滤sql字符串 截图不是文本文件.简单的过滤sql语句防止注入

    Oracle数据库Sql语句详解大全

    写一条SELECT查询语句 在查询中使用表达式、运算符 对空值的处理 对查询字段起别名 查询字段的连接 第二章 条件查询 WHERE条件查询 在查询中使用表达式、运算符 使用LIKE、BETWEEN、IN进行模糊查询 第三章 单行...

    QT 4.5 多开发语言内嵌SQL语句效率分析

    分析大型系统源代码中包含的SQL语句,解析这些SQL语句访问的数据表和条件表达式,连接数据库,探测对应的数据表包含的记录个数和参与条件过滤的字段的有效值个数,为数据表构建索引策略提供,并自动生成索引创建脚本...

    LECCO SQL Expert (智能自动SQL优化)

    直至无法产生新的输出或搜索限额满→对 输出的SQL语句进行过滤,选出具有不同执行计划的SQL语句(即不同的执行效率)→对得到的SQL语句进行批量测试,找出性能最好的SQL语句。图2 优化前的SQL语句 自动优化实例 假设...

    oracle sql 去重复记录不用distinct如何实现

    用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 。 select distinct name from t1 能消除重复记录,但只能取一个字段,...

    MySQL根据某一个或者多个字段查找重复数据的sql语句

    主要介绍了MySQL根据某一个或者多个字段查找重复数据的sql语句,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    SQL注入原理以及Spring Boot如何防止SQL注入(含详细示例代码)

    如果应用程序没有对用户输入进行适当的验证和过滤,攻击者可以注入恶意的SQL代码片段,改变原始SQL语句的结构和意图。通过注入恶意的SQL代码,攻击者可以绕过应用程序的身份验证、读取敏感数据、修改数据、执行任意...

    一条sql语句完成MySQL去重留一

    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。

    oracle的sql优化

     对于Where条件的顺序,过滤到最大查询记录数量的条件必须写在Where条件的结尾处。  Where条件中涉及到使用复杂函数判定的必须注意要写到Where条件的最前面 3.索引方面  记录数少的表保留有主键索引就可以了,...

    oracle 存储过程中某入参是逗号分隔,并且参数要使用在in过滤语句中

    oracle存储过程中入参是逗号分隔,并且参数要使用在in过滤语句中查询数据。处理的方法与实现

    程序员的SQL金典.rar

     2.2 通过SQL语句管理数据表  2.2.1 创建数据表  2.2.2 定义非空约束  2.2.3 定义默认值  2.2.4 定义主键  2.2.5 定义外键  2.2.6 修改已有数据表  2.2.7 删除数据表  2.2.8 受限操作的变通解决方案 第3章 ...

    程序员的SQL金典4-8

     2.2 通过SQL语句管理数据表  2.2.1 创建数据表  2.2.2 定义非空约束  2.2.3 定义默认值  2.2.4 定义主键  2.2.5 定义外键  2.2.6 修改已有数据表  2.2.7 删除数据表  2.2.8 受限操作的变通解决方案 第3章 ...

    2009达内SQL学习笔记

    多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号结束 二、写子句顺序 Select column,group_function From table [Where condition] ...

    SQL性能优化

     以上两个SQL中dy_dj(电压等级)及xh_bz(销户标志)两个字段都没进行索引,所以执行的时候都是全表扫描,第一条SQL的dy_dj = '1KV以下'条件在记录集内比率为99%,而xh_bz=1的比率只为0.5%,在进行第一条SQL的...

    Web安全之SQL注入

    SQL注入是指将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。当Web应用程序的开发人员对用户所输入的数据不进行过滤或验证(即存在注入点...

    array-sql-filter:使用SQL的where子句来过滤对象数组

    数组SQL过滤器 向JS对象数组添加类似SQL的查询功能。 包含该库将向对象数组添加where(),select()和orderBy()功能。 where()-接受SQL查询字符串作为参数。 模拟SQL WHERE子句。 处理所有表达式,包括...

    程序员的SQL金典6-8

     2.2 通过SQL语句管理数据表  2.2.1 创建数据表  2.2.2 定义非空约束  2.2.3 定义默认值  2.2.4 定义主键  2.2.5 定义外键  2.2.6 修改已有数据表  2.2.7 删除数据表  2.2.8 受限操作的变通解决方案 第3章 ...

Global site tag (gtag.js) - Google Analytics