码迷,mamicode.com
首页 > 数据库 > 详细

mysql中去重 distinct 用法

时间:2020-03-29 19:39:52      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:mys   多个   学习   sel   sig   one   不重复   div   inf   

distinct的使用语法是这样的:

select distinct expression[,expression...] from tables [where conditions];


在使用distinct的过程中主要注意一下几点:

  • 在对字段进行去重的时候,要保证distinct在所有字段的最前面
  • 如果distinct关键字后面有多个字段时,则会对多个字段进行组合去重,只有多个字段组合起来的值是相等的才会被去重

下面我们通过在开发过程中经常遇到的一些关于distinct的实例来加深大家对该关键字用法的理解:

数据库表结构和数据如下图所示:

技术图片

  •  对单个字段进行去重sql:
select distinct  age from user;

查询结果
age
10
20
30
  • 对多个字段进行去重sql:
select distinct name,age from user;

查询结果
name    age
One    10
Zero    20
Two    20
Four    30
One    30
  • 对多个字段进行去重并求count的sql(实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段):
select count(distinct name,age) as total from user;

查询结果
total
5
  • 对select * 进行去重
select distinct * from user;

由于 * 代表所有字段,所以该sql和 select distinct id,name,age,sign from user 语义相同

查询结果:
id        name    age        sign
1        One        10        梦想要有的,万一实现了呢
2        Zero    20        http://www.chaoshizhushou.com
3        Two        20        OneZeroTwoFour
4        Four    30        加油
5        One        30        学习才是硬道理
6        Four    30        一日三省吾身

 

如果sql这样写:select id,distinct name from user,这样mysql会报错,因为distinct必须放在要查询字段的开头。

所以一般distinct用来查询不重复记录的条数。

如果要查询不重复的记录,有时候可以用group by :

select id,name from user group by name;

mysql中去重 distinct 用法

标签:mys   多个   学习   sel   sig   one   不重复   div   inf   

原文地址:https://www.cnblogs.com/clubs/p/12594159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!