sql中Distinct的使用

作用:消除重复的数值

一、如:

1 select id from T1
2
3 select distinct id from T1

二者的检索效果如下:

distinct可以用来修饰多列,如:

1 select distinct id,name from T1

效果:

发现检索的结果自动按照id列进行排序,再比如:

1 select distinct name,id from T1

发现的结果自动按照name列进行排序。也就是说在执行select语句时,总会对要被检索的列,进行默认的排序,如上例,先按照name进行排序,再按照id进行排序。

可以以不同的方式,对各列进行排序,如:

select distinct name ,id from T1 order by name desc,id asc

效果如下:

二、限制

distinct中的select语句只能是distinct所指定的字段,不能出现其他字段,如:

三、与聚合函数组合

1 select count(distinct id) from T1

将返回不同id的行数。

但是注意count的使用,如下sql语句将报错:

1 select count(distinct name),id from T1

显示错误:选择列表中的列 ‘T1.ID‘ 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

应该这样写:

1 select count(distinct name),id from T1 group by id

select语句中如果有聚合函数,其他被检索的列也应该被包含在聚合函数或者group by子句中。

关于更多count函数的使用,接下来会单独开篇来讲。

时间: 2024-08-25 05:49:11

sql中Distinct的使用的相关文章

SQL中distinct的用法和left join查询的含义

SQL中distinct的用法 1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 表B: 1.作用于单列 select distinct name from A 执行后结果如下: 2.作用于多列 示例2.1 select distinct name, id from A 执行后结果如下: 实际上是根

SQL中distinct的用法

1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 表B: 1.作用于单列 select distinct name from A 执行后结果如下: 2.作用于多列 示例2.1 select distinct name, id from A 执行后结果如下: 实际上是根据name和id两个字段来去重的

SQL中distinct的用法(转自博主:Rain Man)

在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 示例1 select distinct name from A 执行后结果如下: 示例2 select distinct name, id from A 执行后结果如下: 实际上是根据“name+id”来去重,distinct同时作用在了name和id上,这种方式Access和SQL Server同时支持. 示例3:统计 select coun

述 SQL 中的 distinct 和 row_number() over() 的区别及用法

1 前言 在咱们编写 SQL 语句操作数据库中的数据的时候,有可能会遇到一些不太爽的问题,例如对于同一字段拥有相同名称的记录,我们只需要显示一条,但实际上数据库中可能含有多条拥有相同名称的记录,从而在检索的时候,显示多条记录,这就有违咱们的初衷啦!因此,为了避免这种情况的发生,咱们就需要进行"去重"处理啦,那么何为"去重"呢?说白了,就是对同一字段让拥有相同内容的记录只显示一条记录. 那么,如何实现"去重"的功能呢?对此,咱们有两种方式可以实现该

详述 SQL 中的 distinct 和 row_number() over() 的区别及用法

1 前言 在咱们编写 SQL 语句操作数据库中的数据的时候,有可能会遇到一些不太爽的问题,例如对于同一字段拥有相同名称的记录,我们只需要显示一条,但实际上数据库中可能含有多条拥有相同名称的记录,从而在检索的时候,显示多条记录,这就有违咱们的初衷啦!因此,为了避免这种情况的发生,咱们就需要进行"去重"处理啦,那么何为"去重"呢?说白了,就是对同一字段让拥有相同内容的记录只显示一条记录. 那么,如何实现"去重"的功能呢?对此,咱们有两种方式可以实现该

SQL中的5种聚集函数

原文:SQL中的5种聚集函数 作为一个刚毕业进入这行的菜鸟,婶婶的觉的那种大神.大牛到底是怎样炼成的啊,我这小菜鸟感觉这TMD要学的东西这多啊,然后就给自己定了许多许多要学习的东西,可是有人又不停地给你灌输:东西不在多而要精通!我也觉得很有道理,可是怎样才能精通呢?封神之路,在哪里啊 !!! 这一天没有一个安静的心,基本是学不进去了,发现自己还是太功利了,急功近利!也许你只要学就行,管他是否能够立即让人见识到你的厉害,技术和知识这种东西也许还是要强调一个 底蕴的.既然自己最烦那种看了两篇文章就给

LINQ to SQL 中 Concat、Union、Intersect、Except 方法的使用

?  前言 LINQ to SQL 中需要对两个或多个数据集进行操作,比如:合并.取交集等,主要使用下面四个方法,这四个方法都是 System.Linq.IQueryable<out T> 接口的扩展方法,并且都是延迟加载方法,下面是使用的简单示例. ?  示例数据,数据表:Subject(科目表).Score(成绩表) 1.   Concat() 方法 1)   方法声明 public static IQueryable<TSource> Concat<TSource>

SQL SELECT DISTINCT 语句

SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法: SELECT DISTINCT 列名称 FROM 表名称 使用 DISTINCT 关键词 如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句: SELECT Company FROM Orders "Orders"表: Company

SQL中的Null深入研究分析

虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错. Tony Hoare 在1965年发明了 null 引用, 并认为这是他犯下的"几十亿美元的错误". 即便是50年后的今天, SQL中的 null 值还是导致许多常见错误的罪魁祸首. 我们一起来看那些最令人震惊的情况. Null不支持大小/相等判断 下面的2个查询,不管表 users 中有多少条记录,返回的记录都是0行: select * from users where