数据库中 DISTINCT 的作用是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中 DISTINCT 的作用是啥?相关的知识,希望对你有一定的参考价值。

如:
SELECT DISTINCT 学号 FROM 成绩表

SQL数据库中, DISTINCT表示去掉重复的行,作用是针对包含重复值的数据表,用于返回唯一不同的值。语法是SELECT DISTINCT 列名称 FROM 表名称。如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中,否则会出现错误。

对于 DISTINCT关键字,如果后面有多个字段,则代表着是多条件去重,只有当这几个条件都相同时才算是重复记录。

扩展资料:

用法说明如下:

SELECT DISTINCT 列名称 FROM 表名称使用 DISTINCT 关键词

如果要从 "Company" 列中选取所有的值,需要使用 SELECT 语句:

SELECT Company FROM Orders"Orders"表:

Company OrderNumber

IBM 3532

W3School 2356

Apple 4698

W3School 6953

结果:

Company

IBM

W3School

Apple

W3School

尽管DISTINCT用于过滤重复记录。 但是通常在使用时,仅使用其来返回唯一记录的数量,而不是使用其来返回非重复记录的所有值。 原因是DISTINCT只能通过双循环查询来解决,这无疑将直接影响具有大量数据的站点的效率。

参考技术A SQL SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
语法:
SELECT DISTINCT 列名称 FROM 表名称使用 DISTINCT 关键词
如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT Company FROM Orders"Orders"表:
Company OrderNumber
IBM 3532
W3School 2356
Apple 4698
W3School 6953
结果:
Company
IBM
W3School
Apple
W3School
参考技术B DISTINCT就是筛选出不重复的记录,像你这里题目的要求:查询成绩表中有成绩的学生的学号?就要用到DISTINCT,因为一个学生会有很多成绩的,假如用SELECT 学号 FROM 成绩表这句的话,就会查询出许多重复的学号,用destinct就会把这些重复的学号去掉。 参考技术C distinct这个关键字来过滤掉多余的重复记录只保留一条。 参考技术D 去除重复行

Mongo distinct 方法的默认顺序是啥?

【中文标题】Mongo distinct 方法的默认顺序是啥?【英文标题】:What is the default ordering of Mongo distinct method?Mongo distinct 方法的默认顺序是什么? 【发布时间】:2021-04-10 12:51:47 【问题描述】:

我的库存收集如下:

 "_id": 1, "dept": "A", "item":  "sku": "111", "color": "red" , "sizes": [ "S", "M" ] 
 "_id": 2, "dept": "A", "item":  "sku": "111", "color": "blue" , "sizes": [ "M", "L" ] 
 "_id": 3, "dept": "B", "item":  "sku": "222", "color": "blue" , "sizes": "S" 
 "_id": 4, "dept": "A", "item":  "sku": "333", "color": "black" , "sizes": [ "S" ] 

Mongo 文档指定不同的命令如下:

在单个字段中查找指定字段的不同值 收藏。 distinct 返回一个包含数组的文档 不同的价值观。

在dept字段和SKU字段上执行distinct时返回如下:

db.inventory.distinct( "dept" )

输出:[ "A", "B" ]

db.inventory.distinct( "item.sku" )

输出:[ "111", "222", "333" ]

这清楚地表明了不同的命令顺序,默认情况下取决于文档插入集合的顺序。

但理想情况下,数组字段上的不同字段(db.inventory.distinct( "sizes" ))应该返回["S", "M", "L"],但反过来又返回[ "M", "S", "L" ]

此行为仅在 _id 字段上添加默认索引,而没有其他字段索引。

对 mongo 独特实现的任何见解都会有所帮助。提前致谢。

PS:我的要求是集合 A 包含用户元数据(userId,password,createdDate),我在 A(userId 字段)上使用 distinct 并在另一个集合 B 中创建文档以保留每日快照订单等用户相关数据。 典型的 B 文档如下: 日期:日期时间, userData: [user0 的订单, user1 的订单 ... ]

在月底,我需要汇总 users0 的订单数据。 用户元数据可以不断添加新用户,所有用户几乎都有日常订单活动。因此,mongo distinct 的默认排序在这里很重要。

【问题讨论】:

【参考方案1】:

不保证返回的订单结果,所以你应该假设它是任意的。

如果您需要特定顺序的结果,只需在查询中添加 .sort()

【讨论】:

请提供以上信息来源,以便关闭。谢谢 docs.mongodb.com/manual/reference/command/distinct/…

以上是关于数据库中 DISTINCT 的作用是啥?的主要内容,如果未能解决你的问题,请参考以下文章

sql语句去重distinct方法是啥?

在SQL语句中dist是啥意思

MySQL中的 distinct 和 group by 去重效率区别

这个查询语句查询出来的数据会显示多条重复的,但是实际表中数据又只有一条,是啥问题?该怎么改?

distinct是啥意思

distinct用法