当前位置:Gxlcms > 数据库问题 > Sql去重

Sql去重

时间:2021-07-01 10:21:17 帮助过:4人阅读

的值。

注意:1、语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。

           2、distinct必须放在开头 如select distinct name from table


group by:“根据(by)一定的规则进行分组(Group)”

它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
注意:1、按指定的列分组,这必须在查询结果中包含一个聚集函数 如(AVG 、MAX 、MIN、SUM、COUNT)

           2、group by 是先排序后分组;

表名table

ID Name   Address        Telephone

1   张三      哈尔滨         123456789

2   李四       上海            784512357

3   王五       北京            759878456

4    张三       香港            785641231 

ID唯一,去掉Name重复的记录。保留以ID最大,生成如下表:

ID Name   Address        Telephone

2   李四       上海            784512357

3   王五       北京            759878456

4    张三       香港            785641231 

 

此时需要显示多余的字段故不能使用distinct方法!!

正确写法:先根据单个字段(Name)来判断,只保留有id最大的记录,再进行筛选

select*from table where  ID in

(select max(ID) from table group by Name having count(Name)>0)

 

错误写法:实际上Group By已经将Name,Address,Telephone同时进行分组

select max(ID),Name,Address,Telephone from table group by Name,Address,Telephone

显示结果:

ID Name   Address        Telephone

1   张三      哈尔滨         123456789

2   李四       上海            784512357

3   王五       北京            759878456

4    张三       香港            785641231 

Sql去重

标签:distinct   必须   不可   需要   表名   函数   包含   写法   pre   

人气教程排行