Mysql去掉重复数据的做法:distinct , group by。以及数据库的拓展

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql去掉重复数据的做法:distinct , group by。以及数据库的拓展相关的知识,希望对你有一定的参考价值。

参考技术A 一张user表 中的name字段,里面有10个张三。我要只查询出一个张三。

SQL: select distinct name from user

如果还要查询出id

SQL: select distinct name,id from user

SQL :select name from user group by name

group by理解:表里的某一个字段(比如:name) 当出现相同的数据时,group by就将这2条数据合二为一。name就显示一条 数据了。 但是name达到合二为一了,这2条数据的其他数据怎么办呢? 这时候需要配合聚合函数的使用。

where条件:分组前的条件,配合任何关键字使用

Having 条件:分组后的条件 (事后条件) ,只配合group by使用。having条件通常使用聚合函数

SQL :select deptno,sum(sal) from emp group by deptno having sum(sal) > 9000;

SQL: select deptno,count(*) from emp where sal >1000 group by deptno haing sum(sal) > 8000

拓展:

聚合函数定义:聚合函数对一组值进行计算并返回单一的值。(以下都属于聚合函数)

count(*) : 不包括空值。返回对行数目的计数。计算出有多少行,多少条数据。

count() : 包含空值。返回对数目的计数。计算表里有多少行,相当于多少条数据。

sum() : 求和运算

max(); 最大值

min(): 最小值

avg(): 平均值

SQL里 distinct 和 union 的区别?

为什么相同的目的分别用这两个结果却不同? 还是我用错了?谢谢

select distinct和union 都会去掉重复的记录,这点的确是有相似的地方。
但是,如果一个表中本来就有重复的记录,你想去除重复的记录,就只能使用select distinct 。
但是如果是想把不只一个表上下合并起来,并去除重复的记录,那么就用union 。
这两个命令使用的用途完全不一样。
参考技术A select distinct和union 都会去掉重复的记录,这点的确是有相似的地方

但是,如果一个表中本来就有重复的记录,你想去除重复的记录,就只能使用select distinct from
tb

但是如果是想把不只一个表上下合并起来,并去除重复的记录,那么就用union

这两个命令使用的用途完全不一样。本回答被提问者采纳
参考技术B union默认是union distinct
使用时应该没有区别,除非你的语句条件有区别
参考技术C 你的sql语句是什麼样的?

以上是关于Mysql去掉重复数据的做法:distinct , group by。以及数据库的拓展的主要内容,如果未能解决你的问题,请参考以下文章

SQL里 distinct 和 union 的区别?

MySQL笔记数据库的查询

006.Oracle数据库 , DISTINCT去掉重复项重复内容

mysql 查询怎么去除重复列

SQL查询去掉重复数据

oracle用rowid去掉重复值