`
totoxian
  • 浏览: 1074120 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

重复记录只取其一

 
阅读更多

重复记录只取其一

左直拳

有时侯会遇到需要过滤重复记录的情况。

所谓的重复记录,不一定就是完全相同的记录,而更多是指一部分字段内容相同的记录。

比如说,有一个表记录访问日志(LOG),结构如下:

字段

类型

含义

ID

INT

PageId

INT

访问页面的ID

IP

字符串

访问者的IP地址

Date

字符串

访问者日期,如“<chsdate w:st="on" isrocdate="False" islunardate="False" day="1" month="7" year="2007"><span lang="EN-US" style="FONT-SIZE: 12pt"><font face="Times New Roman">2007-07-01</font></span></chsdate>

要求统计页面的访问IP数量,相同的IP,日期相同,算一个IP;日期不同,就算不同的IP

无论是用group by date,ip 还是 group by ip,date,都不正确。

最后是这样写:

SELECT COUNT1AS IpNum FROM LOG AS a

WHERE NOT EXISTS(

SELECT 1 FROM LOG WHERE IP=a.IP AND Date=a.Date AND Id<a.Id

)

关键之处在于 Id<a.Id,就是说IP相同、日期相同的记录中,我只拿第一条,就是ID最小的那一条。

有三千人溺水,我只挑其中一个来嫖。

分享到:
评论

相关推荐

    oracel重复记录只保留一条

    oracel重复记录只保留一条,提供sql语句与存储过程2种处理方式

    SQL排除重复结果只取字段最大值分享

    如何用SQL排除重复结果只取字段最大值的记录?要求得到的结果(即是PID相同的记录只取ID值最大的那一条)。 代码如下:select * from [Sheet1$] awhere ID not exists (select 1 from [Sheet1$] where PID=a.PID and...

    重复记录查询处理

    此语句先找出所有`peopleId`出现次数大于1的记录,再通过`rowid`确定每组重复记录中的第一条记录,并删除其他所有记录。 ##### 2. 多个字段的重复记录删除 当需要基于多个字段(如`peopleId`和`seq`)来删除重复...

    SQL语句删除数据表中重复的记录

    总之,删除SQL数据表中的重复记录是一项常见的任务,可以通过结合`GROUP BY`、聚合函数(如`MAX`)以及`NOT IN`子句来实现。不过,务必谨慎操作,确保数据安全,并根据实际情况调整和优化查询。

    sql删除表中重复记录方法

    标题与描述概述的知识点是关于如何使用SQL语句来删除数据库表中的重复记录,这是一个在数据清理和维护数据完整性时非常实用的技术。以下是对给定文件中四种方法的详细解析和扩展,旨在帮助读者深入理解并掌握这些...

    去掉重复记录select * from

    这意味着对于每个`companyname`,只会返回一个具有最大`comid`值的记录,从而达到去除重复记录的目的。 #### 方法二:使用`NOT IN`子查询 第二个SQL语句为: ```sql select * from company where comid not in ...

    Oracle查询重复数据与删除重复记录方法

    对于较小的表,可以直接创建一个新的表,只包含非重复记录,然后替换原表。 ```sql CREATE TABLE table_new AS SELECT DISTINCT * FROM table1; TRUNCATE TABLE table1; INSERT INTO table1 SELECT * FROM table_...

    如何查出同一张表中字段值重复的记录

    这段代码首先使用 `SELECT DISTINCT *` 创建了一个不含重复记录的新表 `table_new`,接着清空原表 `table1`,最后将新表的数据插入到原表中。 #### 3.2 处理复杂重复情况 对于更复杂的重复情况,比如包含多个字段的...

    wxh Oracle数据库删除重复记录的方法

    删除Oracle数据库中的重复记录是数据清洗和维护过程中的重要一环。不同的方法适用于不同的场景和数据量大小。创建临时表的方法适合数据量较小的情况,而使用ROWID、MAX/MIN函数或GROUP BY和HAVING子句则更适合处理大...

    SQL重复记录查询与删除

    选择哪种方法取决于具体的需求,例如是否考虑多个字段的重复,是否保留特定的重复记录等。在实际操作中,务必谨慎执行删除操作,确保不会丢失重要数据。在执行前最好备份数据,以防止意外发生。

    易语言取数组中重复文本下标

    请注意,这只是一个基本的示例,实际应用中可能需要根据具体需求进行优化,例如存储所有重复下标而非只打印一个,或者处理不同大小的数组。 去除数组中的重复文本通常可以创建一个新的临时数组,只保留不重复的元素...

    MySQL 多表关联一对多查询实现取最新一条数据的方法示例

    多表关联一对多查询取最新的一条数据,数据出现重复 由于历史原因,表结构设计不合理;产品告诉我说需要导出客户信息数据,需要导出客户的 所属行业,纳税性质 数据;但是这两个字段却在订单表里面,每次客户下单...

    删除重复的记录,并保存第一条记录或保存最后一条记录

    1. 使用自连接删除重复记录 自连接是一种常用的删除重复记录的方法。该方法通过连接同一个表两次,使用 WHERE 子句来指定删除的条件。在上面的示例中,我们使用了自连接来删除表 dgpage 中 Mail 重复的记录,并保留...

    Oracle中用Rowid查找和删除表中的重复记录

    在Oracle数据库管理中,处理重复记录是一项常见的需求,尤其是在数据量较大的情况下。本文将详细介绍如何利用Rowid这一特性来有效地查找和删除表中的重复记录。 #### Rowid的概念 Rowid是Oracle数据库中用于唯一...

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

    sql 查出一张表中重复的所有记录数据 1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) &gt; 1) 2、...

    sqlserver中重复数据值只取一条的sql语句

    当数据库表中的某些列有重复的值时,我们可能需要仅选取其中的一条记录,例如,选择每组重复数据的第一条或者最后一条。题目中提到的SQL语句就是解决这类问题的一个示例。 首先,我们创建一个名为`TestData`的数据...

    C# 用SQL自动记录数据并且查询出某一列有哪些重复数据

    本主题聚焦于如何在C#中利用SQL来自动记录数据,并查询出某一列中的重复数据。以下将详细讲解这一过程,以及相关知识点。 首先,我们需要理解C#和SQL的基础。C#是一种面向对象的编程语言,广泛应用于开发Windows...

    oracle查询重复数据方法

    例如,下面的语句可以删除表中多余的重复记录,只留下 rowid 最小的记录: ```sql delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) &gt; 1) and rowid ...

    易语言源码易语言取数组中重复文本下标源码.rar

    本压缩包中的“易语言取数组中重复文本下标源码”提供了处理这些任务的方法。 易语言中的数组是一种存储多个同类型元素的数据结构,可以用来保存一系列值。数组的每个元素都有一个唯一的索引,用于访问和修改这些...

Global site tag (gtag.js) - Google Analytics