"删除mysql表中的重复记录:保留学号字段唯一数据"
需积分: 0 157 浏览量
更新于2023-12-27
收藏 112KB DOC 举报
经典SQL面试题.doc是一份包含了一道经典的mysql面试题的文档。题目要求在一个名为tbl_students的表中,删除除了学号字段以外,其它字段都相同的冗余记录,只保留一条。也就是要删除凤姐和田七中一条重复数据只留一条。要求结果数据如下:
原始数据:
CREATE TABLE tbl_students (
id number(32) NOT NULL,
name varchar(10) DEFAULT NULL,
sax varchar(10) DEFAULT NULL,
age number(6) DEFAULT NULL,
PRIMARY KEY (id)
)
insert into tbl_students (id, name, sax, age) values('2','李四','男','21');
insert into tbl_students (id, name, sax, age) values('3','张三','女','17');
insert into tbl_students (id, name, sax, age) values('4','李四','男','12');
insert into tbl_students (id, name, sax, age) values('6','凤姐','女','22');
insert into tbl_students (id, name, sax, age) values('7','田七','女','20');
insert into tbl_students (id, name, sax, age) values('8','凤姐','女','22');
从原始数据中可以看出,表中包含了id、name、sax和age四个字段,而id字段为主键,意味着它的值唯一。其中名为李四、张三、凤姐和田七的学生存在重复记录。
要实现题目要求的删除重复记录的目标,可以使用SQL语句进行操作。首先需要找到除了id字段以外,其它字段都相同的冗余记录,然后只保留一条。
以下是SQL语句的具体操作步骤:
DELETE FROM tbl_students
WHERE id NOT IN
(
SELECT MIN(id)
FROM tbl_students
GROUP BY name, sax, age
);
这段SQL语句首先使用SELECT MIN(id) FROM tbl_students GROUP BY name, sax, age找到符合题目要求的重复记录中id最小的记录,然后将其保留,其它重复记录删除。
经过执行以上SQL语句,结果数据如下:
保留记录:
id | name | sax | age
2 | 李四 | 男 | 21
3 | 张三 | 女 | 17
4 | 李四 | 男 | 12
6 | 凤姐 | 女 | 22
7 | 田七 | 女 | 20
可以看到,重复的凤姐记录中的id为8的数据被成功删除,而其它重复记录中id较小的记录被留下。
通过这道经典的mysql面试题,不仅加深了对SQL语句的理解和应用,同时也提升了对重复数据处理的技能。这对于日常的数据库管理和数据清洗工作都有着重要的指导意义。
2023-02-19 上传
2022-11-08 上传
2011-08-16 上传
2023-08-04 上传
2023-01-30 上传
2007-06-28 上传
Mckzxs
- 粉丝: 10
- 资源: 6
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载