SQL 按照两个字段去除列重复的数据,保留一行。
首先创建一个例子要用的表
CREATE TABLE [dbo].[as1]
(
[id] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,
[a] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,
[b] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
插入例子要用的数据
INSERT INTO dbo.as1
( id, a, b )
VALUES ( N'1', -- id - nchar(10)
N'2', -- a - nchar(10)
N'3' -- b - nchar(10)
),
( N'2', -- id - nchar(10)
N'2', -- a - nchar(10)
N'2' -- b - nchar(10)
),
( N'3', -- id - nchar(10)
N'2', -- a - nchar(10)
N'1' -- b - nchar(10)
),
( N'4', -- id - nchar(10)
N'2', -- a - nchar(10)
N'2' -- b - nchar(10)
),
( N'5', -- id - nchar(10)
N'1', -- a - nchar(10)
N'2' -- b - nchar(10)
)
-----------分割线---------
SELECT * FROM dbo.as1
--简单查看全部数据
SELECT a.a,a.b FROM dbo.as1 AS a JOIN dbo.as1 AS T ON T.id = a.id WHERE a.a= T.a AND a.b= T.b
GROUP BY a.a, a.b HAVING COUNT(*) > 1
--查询出重复的数据
SELECT id FROM dbo.as1 T
WHERE EXISTS
(
SELECT 1 FROM dbo.as1 WHERE a= T.a AND b= T.b
GROUP BY a, b HAVING COUNT(*) > 1
)
--查询出重复数据对应的ID号
SELECT min(id)AS 最小的ID FROM dbo.as1 GROUP BY a, b HAVING COUNT(*) > 1
--查询出数据里重复ID的最小值(准备保留大的ID)
--下面是要删除的语句的查询
SELECT * FROM dbo.as1
WHERE id IN
(
SELECT id FROM dbo.as1 T
WHERE EXISTS
(
SELECT 1 FROM dbo.as1 WHERE a= T.a AND b= T.b
GROUP BY a, b HAVING COUNT(*) > 1
)
AND
T.id NOT IN
(
SELECT min(id) FROM dbo.as1 GROUP BY a, b HAVING COUNT(*) > 1
)
)
--删除语句
DELETE FROM dbo.as1
WHERE id IN
(
SELECT id FROM dbo.as1 T
WHERE EXISTS
(
SELECT 1 FROM dbo.as1 WHERE a= T.a AND b= T.b
GROUP BY a, b HAVING COUNT(*) > 1
)
AND
T.id NOT IN
(
SELECT min(id) FROM dbo.as1 GROUP BY a, b HAVING COUNT(*) > 1
)
)
--------------
DELETE FROM 表名
WHERE ID号 IN
(
SELECT ID号 FROM 表名 T
WHERE EXISTS
(
SELECT 1 FROM 表名 WHERE 字段1= T.字段1 AND 字段2= T.字段2
GROUP BY 字段1, 字段2 HAVING COUNT(*) > 1
)
AND
T. ID号 NOT IN
(
SELECT min( ID号) FROM 表名GROUP BY 字段1, 字段2 HAVING COUNT(*) > 1
)
)
SQL 按照两个字段去除列重复的数据,保留一行。相关推荐
- sql数据库中有多列重复的数据查询
数据库测试表testtable 一.单列重复查询 sql:SELECT Name FROM testtable t WHERE Name IN (SELECT Name FROM testtable ...
- sql删除某字段重复的数据保留id最小的数据
sql删除某字段重复的数据保留id最小的数据笔记 1. 查看某字段重复数据的id 2. 删除某字段重复的数据 1. 查看某字段重复数据的id SELECTid,count(*) FROMmerchan ...
- 使用MapReduce对豆瓣的数据评分进行排序,最终只要:电影名,评分 两个字段。(温馨提示:数据需要去重)
使用MapReduce对豆瓣的数据评分进行排序,最终只要:电影名,评分 两个字段.(温馨提示:数据需要去重) 一. 首先讲一下Java中的compareTo方法: 利用CompareTo时,其返回值为 ...
- mysql删除重复的数据保留一条
mysql删除重复的数据保留一条 -- 删除多余的重复记录,只保留最小id的记录,content 为内容重复字段 DELETE FROM zimis WHERE id IN (SELECT * FRO ...
- oracle sql判断相等,Oracle PL/SQL判断两个字段相等或不等问题
Oracle PL/SQL中判断两个两个字段相等或者不相等的时候,常常出现:字段值明明不相等(一个空,一个不空),但是判断不相等的时候就是得不到TRUE. 例如以下代码: ... a1 VARCHA ...
- MS SQL用两个字段中较大的值为条件进行查询
要实现功能:以做K3时间与安装完成时间较晚的时间作为工程师奖金核算月份. select a.IAId,a.achproid,b.InstallId,b.InstallDate,ap.K3Date fr ...
- sql删除重复的数据保留一条_leetcode题库-sql练习精讲系列--九、删除重复
这是一个系列文章,这个系列的理念是通过一道题,搞懂一类题.涵盖了SQL面试最常考的知识点.搞懂这些题,面试时工作中sql不可能有问题. 文章分为引入问题-完整解析-答案-leetcode题和答案-知识 ...
- php去除重复的数据保留一条,mysql查找删除重复数据并只保留一条实例详解
有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 ...
- vue两个数组如何判断值是否相同_vue两个数组如何判断重复的数据?
在做一我自址哈这工边识框处己按后大都加控不架的个添加标签的模比抖朋要插支一圈不者地器享说几块,如下: 我遇到的问题:能选一样的标签 我想要的效果:标签不能选一样 我最开始想到的是用v-if判断两个数组 ...
最新文章
- python 给字典排序
- sap服务器应用webservice加载spring的机制问题
- SAP+ 差旅报销集成方案的实现
- 科学计算机程序 字表处理软件都是,计算机应用基础知识_计算机应用基础试题及答案【最新资料】.doc...
- 如何自学python到做项目-如何使用python进行第一个机器学习项目(详细教程篇)...
- 移动端触屏网页的触摸事件
- Shady 深度学习课程
- Netty工作笔记0044---Netty案例源码分析
- 很有趣的STL初学资料
- React中useEffect使用
- cmd使用SBT构建scala项目
- Xshell使用基础教程
- 手机话费充值和手机流量充值 API
- 2020电信校园卡已经发售,更新校园卡最新消息及选购建议
- AP 计算机 从D到A,8节课完成飞跃的进步----麻省理工老师的学生如何说
- 【精选】表情包斗图小程序(可引流,开通流量主,权益外卖cps,带pc后台管理)
- 中国科学院的研究所很难进吗?
- 真的不建议学Python,煞笔才学习Python,学Python难?两个小时足够搞定
- PostgreSQL 访问外部数据库之 postgres_fdw
- win7的远程桌面连接在哪