sql去重常用的基本方法

1.存在两条完全相同的纪录

select distinct * from table(表名) where (条件)

2.存在部分字段相同的纪录(有主键id即唯一键)

如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组

例子:

        select * from table where id in (select max(id) from table group by [去除重复的字段名列表,..]

3.没有唯一键ID

m.*表示取m表的所有字段,然后其他的表不需要用到id,其他表只取特定字段,这样就不会发生id重复的问题了

例子:有成绩表和学生表

#成绩表
CREATE TABLE `SCORE` (`SNO` varchar(3) NOT NULL,`CNO` varchar(5) NOT NULL,`DEGREE` decimal(10,1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `SCORE` VALUES ('103','3-245',86.0),('105','3-245',75.0),('109','3-245',68.0),('103','3-105',92.0),('105','3-105',88.0),('109','3-105',76.0),('101','3-105',64.0),('107','3-105',91.0),('101','6-166',85.0),('107','6-106',79.0),('108','3-105',78.0),('108','6-166',81.0);#学生表
CREATE TABLE `STUDENT` (`SNO` varchar(3) NOT NULL,`SNAME` varchar(4) NOT NULL,`SSEX` varchar(2) NOT NULL,`SBIRTHDAY` datetime DEFAULT NULL,`CLASS` varchar(5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `STUDENT` VALUES ('108','曾华','男','1977-09-01 00:00:00','95033'),('105','匡明','男','1975-10-02 00:00:00','95031'),('107','王丽','女','1976-01-23 00:00:00','95033'),('101','李军','男','1976-02-20 00:00:00','95033'),('109','王芳','女','1975-02-10 00:00:00','95031'),('103','陆君','男','1974-06-03 00:00:00','95031');

需求是查询所有选修“计算机导论”课程的“男”同学的成绩表

如果使用select * from table的方式会出现重复字段

SELECT * FROM score a,student bWHERE a.sno = b.sno AND b.ssex='男' AND cno = (SELECT cno FROM course WHERE cname='计算机导论')

查询结果如下

解决方案就是按需查询:

m.*表示取m表的所有字段,然后其他的表不需要用到id,其他表只取特定字段,这样就不会发生id重复的问题了

SELECT b.*,a.cno,a.degree FROM score a,student bWHERE a.sno = b.sno AND b.ssex='男' AND cno = (SELECT cno FROM course WHERE cname='计算机导论')

查询结果如下

sql去重常用的基本方法相关推荐

  1. 前端:JS实现数组去重常用的六种方法介绍

    今天给大家分享JS实现数组去重常用的六种方法,希望对大家能有所帮助! 定义变量 let arr = [20,6,13,20,100,8,13,11]; let newArr = []; 1.两层循环去 ...

  2. SQL去重的三种方法汇总

    SQL去重的三种方法汇总 这里的去重是指:查询的时候, 不显示重复,并不是删除表中的重复项 1.distinct去重 注意的点:distinct 只能一列去重,当distinct后跟大于1个参数时,他 ...

  3. SQL去重的三种方法汇总 ​

    今天来看3种SQL里去重的方法 正文 来自:blog.csdn.net/xienan_ds_zj/article/details/103869048 转自:程序员的成长之路 在使用SQL提数的时候,常 ...

  4. SQL去重的三种方法汇总 ​

    欢迎关注方志朋的博客,回复"666"获面试宝典 在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重. 在 MySQL 中通常是使用 ...

  5. SQL去重的三种方法

    目录 1.distinct去重 2.group by去重 3.row_number() over (parttion by 分组列 order by 排序列) 有这么一张test的表, 我们将对这张表 ...

  6. SQLserver 常用函数适用方法(转载)

    SQL Server 常用函数使用方法(持续更新) 之前就想要把一些 SQL 的常用函数记录下来,不过一直没有实行...嘿嘿... 直到今天用到substring()这个函数,C# 里面这个方法起始值 ...

  7. ASP与SQL数据库连接及SQL常用命令使用方法

    <% dim conn set conn=server.createobject("ADODB.connection") con.open "PROVIDER=SQ ...

  8. 苹果cms数据.php,苹果cms数据库常用sql语句对照及使用方法

    这篇文章主要为大家详细介绍了苹果cms数据库常用sql语句对照及使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 苹果cms v10常用sql语句 使用方 ...

  9. SQL 中去重的三种方法

    点击关注上方"逆锋起笔", 设为"置顶或星标",第一时间送达干货 blog.csdn.net/xienan_ds_zj/article/details/1038 ...

最新文章

  1. System.Net 类的最佳习惯
  2. HDU1556(树状数组模版)
  3. android matrix 简书,android matrix
  4. excel中日期设置星期
  5. 如何用四个月搞定java?
  6. SAP concur image download on request
  7. python不能创建字典的是_用Python创建带有重复键的字典
  8. 远程计算机怎么安装软件安装,轻松一步把电脑上的软件远程安装到电视上!
  9. 跟我一起学JQuery插件开发教程
  10. python函数定义时参数相当于占位符_python中函数的参数
  11. 【转】robot framework + python实现http接口自动化测试框架
  12. 激光雷达(LiDAR)| 第一节:点云处理库与软件介绍
  13. 【实习之T100开发】帆软报表笔记
  14. 元素出现>强调>再消失的动画制作【PPT动画】
  15. JavaScript验证身份证号码(15位/18位)
  16. python进行邮件文件.eml.pst.msg信息提取(包括附件)
  17. 《让子弹飞》系列——彩蛋之“城南两大家族”
  18. Swift使用UserDefaults存储,报错 Fatal error: ‘try‘ expression unexpectedly raised an error: Swift.Decoding
  19. 企业微信如何创建待办事项?
  20. babylonjs 分部加载模型_基于babylon3D模型研究3D骨骼动画(1)

热门文章

  1. android ANR产生原因和解决办法
  2. Vs2010架构设计-层图(Layer Diagram)
  3. 惠普:计算机在非洲大有可为(zz)
  4. javaScript中私有属性和方法
  5. Nodejs之旅开始
  6. mysql abc_MySql ABC
  7. PTA c语言 统计一行文本的单词个数
  8. html中两个div垂直居中对齐,在div中垂直居中的两个元素
  9. Objective-C中的面向对象编程
  10. Python----倚楼听风雨