专业编程基础技术教程

网站首页 > 基础教程 正文

SQL常见笔试题解析之删除表中的重复数据

ccvgpt 2024-08-03 12:27:13 基础教程 18 ℃

概述:

本章内容主要讲一下,软件开发工程师笔试过程中,经常遇到的一道SQL笔试题!虽然题目不是很难,但引无数英雄竞折腰!

今天闲来无事,2021年最后一更!年初又是招聘与跳槽的高峰季了,未雨绸缪,有备无患!

SQL常见笔试题解析之删除表中的重复数据

该题目分成俩种模式,第一种是ID,其他列均重复,这种情况现实开发中,已经很难出现了!第二种方式ID不重复,其他列重复,这种情况还是有可能出现的,当恶意刷表单,或者设计漏洞,可能会导致该情况的出现。

首先来看一下,第一种模式的解决思路,先整理好数据脚本!

CREATE  TABLE RPEAT_ONE
(
	ID INT,
	NAME VARCHAR(20)
)

INSERT INTO RPEAT_ONE SELECT 1,'A'
INSERT INTO RPEAT_ONE SELECT 1,'A'
INSERT INTO RPEAT_ONE SELECT 1,'A'
INSERT INTO RPEAT_ONE SELECT 2,'B'
INSERT INTO RPEAT_ONE SELECT 2,'B'
INSERT INTO RPEAT_ONE SELECT 2,'B'
INSERT INTO RPEAT_ONE SELECT 3,'C'

简单、粗暴,不需要动脑,直接硬撸!撸出一片天地!将数据的唯一项查询出来,保存到临时表中,随后清表,然后再插回来!

SELECT DISTINCT ID,NAME INTO #TEMP_RPEAT_ONE FROM RPEAT_ONE

TRUNCATE TABLE RPEAT_ONE

INSERT INTO RPEAT_ONE SELECT * FROM #TEMP_RPEAT_ONE

接下来看第二种方式,如何解决?先整理好数据脚本!

CREATE  TABLE RPEAT_TWO
(
	ID INT,
	NAME VARCHAR(20)
)

INSERT INTO RPEAT_TWO SELECT 1,'A'
INSERT INTO RPEAT_TWO SELECT 2,'A'
INSERT INTO RPEAT_TWO SELECT 3,'A'
INSERT INTO RPEAT_TWO SELECT 4,'B'
INSERT INTO RPEAT_TWO SELECT 5,'B'
INSERT INTO RPEAT_TWO SELECT 6,'B'
INSERT INTO RPEAT_TWO SELECT 7,'C'


这种方式相对容易,我们只需要保存每个重复名字,对应的最小ID或者最大ID即可!其余的全部删除,拿名字列作为分组聚合条件,进行筛选,随后删除,即可一劳永逸地解决问题!

DELETE FROM RPEAT_TWO
WHERE ID NOT IN 
(
	SELECT MIN(ID) AS ID FROM RPEAT_TWO
	GROUP BY Name
)

总结一下:

以上就是关于上述题目的简单解决方案,题目虽然不难!对于新入行或者想跳槽的小伙伴,在短时间内答题,可能还是略显仓促,还是需要平时多积累,这样才能从容应对!

喜欢的小伙伴可以关注我,一起交流学习!我是IT鸟叔,一位喜欢写程序、钓鱼、喝茶、玩游戏的中年大叔!

Tags:

最近发表
标签列表