一道关于删除数据表中重复数据的笔试题

转载 2016年08月28日 22:02:21
一张存放学生学号、姓名、课程以及成绩的数据表,设计将同一学号的记录只保留一条


结果如下图所示





 我的答案:

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. CREATE TABLE IF NOT EXISTS `student` (  
  2. `stu_no` int unsigned NOT NULL DEFAULT 0,  
  3. `stu_name` varchar(20) not null DEFAULT '',  
  4. `scheme` varchar(20) not null DEFAULT '',  
  5. `grade` int unsigned not null DEFAULT 0  
  6. )ENGINE=InnoDB DEFAULT CHARSET=utf8 ;  
  7.   
  8. INSERT INTO `student` VALUES (1001, '张三''数学', 90);  
  9. INSERT INTO `student` VALUES (1002, '李四''英语', 80);  
  10. INSERT INTO `student` VALUES (1003, '王五''语文', 100);  
  11. INSERT INTO `student` VALUES (1001, '张三''数学', 90);  
  12. INSERT INTO `student` VALUES (1002, '李四''英语', 80);  
  13. INSERT INTO `student` VALUES (1003, '王五''语文', 100);  
  14. INSERT INTO `student` VALUES (1001, '张三''数学', 90);  
  15. INSERT INTO `student` VALUES (1002, '李四''英语', 80);  
  16. INSERT INTO `student` VALUES (1003, '王五''语文', 100);  
  17.   
  18. CREATE TABLE `student_2` LIKE `student`;  
  19.   
  20. ALTER TABLE `student_2` ADD CONSTRAINT uk_stu_no UNIQUE(`stu_no`);  
  21.   
  22. INSERT IGNORE INTO `student_2` SELECT * FROM `student`;  
  23.   
  24. DROP TABLE `student`;  
  25.   
  26. ALTER TABLE `student_2` RENAME TO `student`;   

或者

[sql] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. CREATE TABLE IF NOT EXISTS `student` (  
  2. `stu_no` int unsigned NOT NULL DEFAULT 0,  
  3. `stu_name` varchar(20) not null DEFAULT '',  
  4. `scheme` varchar(20) not null DEFAULT '',  
  5. `grade` int unsigned not null DEFAULT 0  
  6. )ENGINE=InnoDB DEFAULT CHARSET=utf8 ;  
  7.   
  8. INSERT INTO `student` VALUES (1001, '张三''数学', 90);  
  9. INSERT INTO `student` VALUES (1002, '李四''英语', 80);  
  10. INSERT INTO `student` VALUES (1003, '王五''语文', 100);  
  11. INSERT INTO `student` VALUES (1001, '张三''数学', 90);  
  12. INSERT INTO `student` VALUES (1002, '李四''英语', 80);  
  13. INSERT INTO `student` VALUES (1003, '王五''语文', 100);  
  14. INSERT INTO `student` VALUES (1001, '张三''数学', 90);  
  15. INSERT INTO `student` VALUES (1002, '李四''英语', 80);  
  16. INSERT INTO `student` VALUES (1003, '王五''语文', 100);  
  17.   
  18. CREATE TABLE `student_2` LIKE `student`;  
  19.   
  20. #ALTER TABLE `student_2` ADD CONSTRAINT uk_stu_no UNIQUE(`stu_no`);  
  21.   
  22. INSERT IGNORE INTO `student_2` SELECT * FROM `student` GROUP BY `stu_no`;  
  23.   
  24. DROP TABLE `student`;  
  25.   
  26. ALTER TABLE `student_2` RENAME TO `student`;   

相关文章推荐

一道关于删除数据表中重复数据的笔试题

一张存放学生学号、姓名、课程以及成绩的数据表,设计将同一学号的记录只保留一条 如下图所示...

一道迅雷笔试题引发的思考?—— 不重复随机算法

csdn上看到的一帖子 http://topic.csdn.net/u/20120825/20/6171393d-15ea-4a50-ba30-78d1d24974e3.html,是关于一种不重复随机...
  • ani_di
  • ani_di
  • 2012年08月30日 16:57
  • 965

查询和删除数据表中重复数据的sql

1、查询表中重复数据。select * from people where peopleId in (select   peopleId   from   people   group   by...
  • SH_King
  • SH_King
  • 2015年07月30日 14:10
  • 495

OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)

本文先给出一个看似很简单实则有深意的Java笔试面试题,引出JDK内部的缓存。 JDK内部的缓存,主要是为了提高Java程序的性能。 你能答对这道“看似简单,实则有深意”的Java题目?...

SQL语句删除数据表中重复的记录

  • 2013年10月17日 10:23
  • 21KB
  • 下载

单链表的节点内数据值的删除问题(携程网笔试题)

单链表的节点内数据值的删除问题(携程网笔试题)

【笔试题】一个无重复面值的找零算法的思路与实现【方案2】

给出升序排列的N个数字,比如1, 2, 3, 7, 70 找出无法被这组数字组成的最小正整数。(这组数字中每个数字最多使用一次) (1)简单描述你的算法和思路。 (2)用C/C++实现 (3)...

阿尔卡特2013年实习生招聘笔试题 最长不重复子串 贪心算法

阿尔卡特2013年实习生招聘笔试题 最长不重复子串 贪心算法

删除SQL2000数据表中的重复记录

有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。 1、对于第一种重复,比较容易解决,使用 ...

MySql-如何查询删除数据表重复记录

查询SELECT name, email, COUNT(*) FROM users GROUP BY name, email HAVING COUNT(*) > 1重...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一道关于删除数据表中重复数据的笔试题
举报原因:
原因补充:

(最多只允许输入30个字)