`
zyn010101
  • 浏览: 325085 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

查询重复记录和删除重复记录

 
阅读更多
/*
Navicat MySQL Data Transfer

Source Server         : 本机
Source Server Version : 50022
Source Host           : localhost:3306
Source Database       : test

Target Server Type    : MYSQL
Target Server Version : 50022
File Encoding         : 65001

Date: 2012-04-24 17:22:41
*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `ts`
-- ----------------------------
DROP TABLE IF EXISTS `ts`;
CREATE TABLE `ts` (
  `id` int(11) default NULL,
  `pcode` int(11) default NULL,
  `cno` varchar(20) default NULL,
  `count1` int(11) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of ts
-- ----------------------------
INSERT INTO `ts` VALUES ('1', '1', ' 001', '10000');
INSERT INTO `ts` VALUES ('2', '1', ' 002', '5000');
INSERT INTO `ts` VALUES ('3', '1', ' 003', '20000');
INSERT INTO `ts` VALUES ('4', '2', ' 001', '40000');
INSERT INTO `ts` VALUES ('5', '2', ' 003', '30000');
INSERT INTO `ts` VALUES ('6', '3', ' 002', '90000');
INSERT INTO `ts` VALUES ('7', '3', ' 002', '90000');
INSERT INTO `ts` VALUES ('8', '3', ' 002', '90000');

 查询pcode字段相同的记录:

select * from ts where pcode in (select pcode from ts group by pcode having count(1)>1);

 

查询pcode,cno,count1三个字段均相同的记录:

select *  from ts where  concat(pcode,cno,count1) in (select concat(pcode,cno,count1) from ts group by pcode,   cno,  count1  having count(1) >= 2) 

 

删除多余的pcode字段相同的记录

delete from ts where pcode in (select pcode from ts group by pcode having count(1)>1) and id not in (select min(id)  from ts group by pcode  having count(1) >= 2);

 

删除多余的pcode,cno,count1三个字段均相同的记录:

delete  from ts where  concat(pcode,cno,count1) in (select concat(pcode,cno,count1) from ts group by pcode,   cno,  count1  having count(1) >= 2)  and id not in (select min(id)  from ts group by pcode,   cno,  count1  having count(1) >= 2)

 在此注意:多字段的时候该语句仅适用于字段值均不为空的情况,concat函数中的参数有一个为空便会返回空值。

分享到:
评论

相关推荐

    删除数据表中重复记录

    2. **标记重复记录**:可以创建一个临时表或使用子查询来标记出需要删除的重复记录。 3. **执行删除操作**:基于标记好的记录执行删除操作。 #### 示例代码解析 以下是一段示例SQL脚本,用于演示如何删除表`a`中的...

    sql查询重复记录方法大全

    - 使用`SELECT DISTINCT`查询去除重复记录,并将结果存储到临时表`#Tmp`。 - 删除原始表,并将临时表中的数据重新导入到原表中。 以上是查询和处理SQL中重复记录的一些常用方法,每种方法都有其适用场景,实际应用...

    plsql删除重复记录

    ### PL/SQL删除Oracle数据库中的重复记录方法详解 ...通过上述步骤,你可以有效地识别并删除Oracle数据库中的重复记录,从而保持数据的一致性和准确性。这种方法不仅适用于简单的场景,对于复杂的业务环境也同样适用。

    基于深度学习的大规模数据库重复记录删除研究.pdf

    研究结果表明,基于深度学习的大规模数据库重复记录删除方法具有一定的理论和实际价值。 深度学习算法在大规模数据库重复记录删除中的应用具有以下几点优势: 1. 高度准确的分类能力:深度学习算法可以对数据库...

    sql查询重复记录语句

    本文将深入解析几种常见的SQL查询重复记录的方法,并通过示例代码加以说明,帮助读者更好地理解和掌握这些技巧。 ### SQL查询重复记录方法概览 #### 方法一:查询所有重复记录 首先,我们来看一种查询所有重复记录...

    SQL语句查询重复记录大全

    以上介绍的是SQL中处理重复记录的基本方法,包括查询和删除。在实际应用中,还需要根据具体的需求选择合适的策略,并注意数据安全问题,确保删除操作不会造成不可逆的数据丢失。此外,在进行删除操作之前,最好对...

    查询及删除重复记录的SQL语句.

    1. **查询重复记录**: 当我们想找出基于单一字段(如 `Id`)的重复记录时,可以使用如下的 SQL 语句: ```sql select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1) ``` 这个...

    重复记录查询处理

    对于单一字段(如`peopleId`)的重复记录删除,可以通过以下步骤实现: ```sql DELETE FROM people WHERE peopleId IN ( SELECT peopleId FROM people GROUP BY peopleId HAVING COUNT(peopleId) > 1 ) AND rowid...

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

    本文将详细介绍几种常用的查询和删除Oracle数据库中重复记录的方法。 #### 一、查询重复数据 1. **使用ROWID** ROWID是Oracle提供的一种特殊数据类型,它表示表中行的物理地址。通过ROWID可以快速定位到表中的某...

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

    ### Oracle查询重复数据与删除重复记录方法 #### 一、查询重复数据 ##### 1. 使用ROWID方法 ROWID是Oracle中一个特殊的数据类型,它代表了表中每一条记录在物理存储上的唯一地址。利用ROWID可以非常高效地查询和...

    Oracle查询重复数据并删除,只保留一条记录.docx

    接下来,我们可以使用 DELETE 语句来删除这些重复记录,但保留 rowid 最小的记录: ```sql delete from R_RESOURCE_DETAILS where (FIELD_CODE) in (select FIELD_CODE from R_RESOURCE_DETAILS group by FIELD_...

    使用Oracle查询并删除重复记录的SQL语句

    Oracle数据库提供了多种方式来查询和删除重复记录,本文将详细介绍这些方法。 查找表中多余的重复记录 使用子查询可以轻松地查找表中多余的重复记录。例如,假设我们有一个名为people的表,其中包含一个名为...

    oracle中如何删除重复的记录

    因此,学会如何有效删除这些重复记录对于维护数据库的健康状态至关重要。 #### 了解问题背景 根据提供的部分SQL查询结果示例: ```sql SQL>select * from user1; AGE ---------- 1 1 2 3 3 ``` 可以看到表`user1`...

    ORACLE重复记录查询.docxORACLE

    2. **单个字段重复记录删除** 如果想要删除这些重复记录,保留`rowid`最小的那条记录,可以执行: ```sql delete from people where peopleId in (select peopleId from people group by peopleId having count...

    SQL重复记录查询与删除

    2. 单字段重复记录删除: 要删除重复记录,但保留每个唯一字段值中rowid最小的记录,可以使用如下语句: ```sql delete from people where peopleId in ( select peopleId from people group by peopleId ...

    怎样删除数据库中重复记录

    今天,我们将讨论删除数据库中重复记录的经典方法,包括使用 SQL 语句和其他技巧。 查找表中多余的重复记录 要删除数据库中重复记录,首先需要找到这些记录。我们可以使用 SQL 语句来实现这一点。例如,我们可以...

    sql查询表中某字段下所有重复的记录

    sql查询表中某字段下所有重复的记录,删除某字段下重复记录最小的那笔记录

    SQL语句删除重复记录

    SQL语句删除重复记录 在数据库管理中,删除重复记录是一个非常重要的...我们可以使用多种方法来删除重复记录,包括使用临时表、游标、存储过程和窗口函数等。每种方法都有其优缺,需要根据实际情况选择合适的方法。

    删除Access数据库中重复的记录

    在Access中一般只能查找10行大概20条重复记录,这样程序就可以任意指定表及多字段检索重复记录,并把重复的记录移除到一个临时表中,并不是进行真正删除,你可以进行恢复。但是执行第二次查找时则自动删除上次查找的...

Global site tag (gtag.js) - Google Analytics