--例如:
id NAME VALUE
1 a pp
2 a pp
3 b iii
4 b pp
5 b pp
6 c pp
7 c pp
8 c iii
--id是主键
--要求得到这样的结果
id NAME VALUE
1 a pp
3 b iii
4 b pp
6 c pp
8 c iii --方法1
DELETE YourTable
WHERE [id] NOT IN (SELECT MAX([id])
FROM YourTable
GROUP BY
(NAME + VALUE)) --方法2 DELETE a
FROM 表 a
LEFT JOIN (
SELECT id = MIN(id)
FROM 表
GROUP BY
NAME,
VALUE
)b
ON a.id = b.id
WHERE b.id IS NULL --查询及删除重复记录的SQL语句
--查询及删除重复记录的SQL语句
--1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 SELECT *
FROM people
WHERE peopleId IN (SELECT peopleId
FROM people
GROUP BY
peopleId
HAVING COUNT(peopleId) > 1)
--2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 DELETE
FROM people
WHERE peopleId IN (SELECT peopleId
FROM people
GROUP BY
peopleId
HAVING COUNT(peopleId) > 1)
AND rowid NOT IN (SELECT MIN(rowid)
FROM people
GROUP BY
peopleId
HAVING COUNT(peopleId) > 1)
--3、查找表中多余的重复记录(多个字段) SELECT *
FROM vitae a
WHERE (a.peopleId, a.seq) IN (SELECT peopleId,
seq
FROM vitae
GROUP BY
peopleId,
seq
HAVING COUNT(*) > 1)
--4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 DELETE
FROM vitae a
WHERE (a.peopleId, a.seq) IN (SELECT peopleId,
seq
FROM vitae
GROUP BY
peopleId,
seq
HAVING COUNT(*) > 1)
AND rowid NOT IN (SELECT MIN(rowid)
FROM vitae
GROUP BY
peopleId,
seq
HAVING COUNT(*) > 1) --5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 SELECT *
FROM vitae a
WHERE (a.peopleId, a.seq) IN (SELECT peopleId,
seq
FROM vitae
GROUP BY
peopleId,
seq
HAVING COUNT(*) > 1)
AND rowid NOT IN (SELECT MIN(rowid)
FROM vitae
GROUP BY
peopleId,
seq
HAVING COUNT(*) > 1)
--(二)
--比方说
--在A表中存在一个字段“name”,
--而且不同记录之间的“name”值有可能会相同,
--现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项; SELECT NAME,
COUNT(*)
FROM A
GROUP BY
NAME
HAVING COUNT(*) > 1 --如果还查性别也相同大则如下: SELECT NAME,
sex,
COUNT(*)
FROM A
GROUP BY
NAME,
sex
HAVING COUNT(*) > 1(三)
--方法一 DECLARE @max integer,
@id integer DECLARE cur_rows CURSOR LOCAL
FOR
SELECT 主字段,
COUNT(*)
FROM 表名
GROUP BY
主字段
HAVING COUNT(*) > ; 1 OPEN cur_rows
FETCH cur_rows INTO @id,@max
WHILE @@fetch_status = 0
BEGIN
SELECT @max = @max -1
SET ROWCOUNT @max
DELETE
FROM 表名
WHERE 主字段 = @id FETCH cur_rows INTO @id,@max
END
CLOSE cur_rows
SET ROWCOUNT 0 --方法二
--"重复记录"有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
--1、对于第一种重复,比较容易解决,使用 SELECT DISTINCT *
FROM tableName
--就可以得到无重复记录的结果集。
--如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除 SELECT DISTINCT * INTO #Tmp
FROM tableName DROP TABLE tableName
SELECT * INTO tableName
FROM #Tmp DROP TABLE #Tmp
--发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
--2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
--假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
SELECT IDENTITY(INT, 1, 1) AS autoID,
* INTO #Tmp
FROM tableName SELECT MIN(autoID) AS autoID INTO #Tmp2
FROM #Tmp
GROUP BY
NAME,
autoID SELECT *
FROM #Tmp
WHERE autoID IN (SELECT autoID
FROM #tmp2)
--最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)(四)
--查询重复 SELECT *
FROM tablename
WHERE id IN (SELECT id
FROM tablename
GROUP BY
id
HAVING COUNT(id) > 1)

SQL查询和删除重复字段的内容的更多相关文章

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

    一:查询及删除重复记录的SQL语句1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select ...

  2. Oracle 查询并删除重复记录的SQL语句

    查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select  ...

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

    查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group ...

  4. SQL语句添加删除修改字段及一些表与字段的基本操作

    用SQL语句添加删除修改字段 1.增加字段     alter table docdsp    add dspcode char(200)2.删除字段     ALTER TABLE table_NA ...

  5. oracle_SQL 实验查询及删除重复记录 依据条件 (row)

    除数据库表中的重复记录 根据条件 ① 创建表准备数据 创建表 tab_test -- Create table create table TAB_TEST ( ID NUMBER, NAME NVAR ...

  6. 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等

    用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 ALTER TABLE table_NAME DROP CO ...

  7. SQL语句添加删除修改字段[sql server 2000/2005]

    用SQL语句添加删除修改字段1.增加字段     alter table docdsp    add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME ...

  8. SQL语句添加删除修改字段

    用SQL语句添加删除修改字段1.增加字段     alter table docdsp    add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME ...

  9. MySQL查询及删除重复记录的方法

    查询及删除重复记录的方法(一)1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select p ...

随机推荐

  1. test文件伪装

    该文件属于伪装图片类型.图片另存后把后缀改为rar将看到txt文件. 利用了 cmd cp  /b  命令 命令格式:copy /b 文件1+文件2+......文件N 合并后的文件名<br&g ...

  2. 使用github出了些问题?fatal: unable to access;Failed connect to github.com:8087;

    使用github出了些问题?fatal: unable to access;Failed connect to github.com:8087; No error 我今天使用git push orig ...

  3. FileInputStream 小Demo

    要求:设计如下界面  文本框里面可以输入的路径和文件名  单机按钮可以读取在 指定的文件  并把文件内容显示到一个文本域里面来 代码: /** * */ package com.niit.homewo ...

  4. 团队作业8——第二次项目冲刺(Beta版本)5.24

    1.当天站立式会议照片 会议内容 1.总结前几次会议中出现的问题. 2.对第二天需要做的任务进行分配. 3.询问团队队员任务完成情况以及时间分配是否充分. 4.对今后的任务,发表自己的看法. 2.每个 ...

  5. 【Beta】Daily Scrum Meeting——Day4

    站立式会议照片 1.本次会议为第四次Meeting会议: 2.本次会议在早上9:35,在陆大2楼机房召开,本次会议为25分钟讨论今天要完成的任务以及接下来的任务安排. 燃尽图 每个人的工作分配 成 员 ...

  6. Emacs操作指南

  7. 201521123057《Java程序设计》第14周学习总结

    0. 本周课程设计发布 Java课程设计 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 数据库基本操作(目前为止主要介绍了表的基本操作) 创建表 CREATE ...

  8. JQUERY选中问题

    单选,复选,下拉列表的全选选中问题 基本思路就是找到元素,操作元素,关于怎么找看jquery简介,主要学习记住具体操作用到的方法   复选框的全选以及设置选中问题:   jquery中提供prop方法 ...

  9. Excel表科学记数法的数字和文本的转换

    一,科学记数法的数字转换文本类型: 1,还未有数据,先选中列或者单元格 右键单击->设置单元格格式->文本->确定 2,已有数据,先选中列或者单元格 右键单击->设置单元格格式 ...

  10. JavaEE成长之路

    前言 学习Java已经有一段时间了,在学习的过程中也走过了不少弯路. 写下这篇博文,主要是想记录下自己学习编程之路,以及反思自己在学习的时候出现的问题,下面也会给出我自认为学习JavaEE的路线,想要 ...