distinct和group by的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了distinct和group by的区别相关的知识,希望对你有一定的参考价值。

这两者本质上应该没有可比性,distinct 取出唯一列,group by 是分组,但有时候在优化的时候,在没有聚合函数的时候,他们查出来的结果也一样。

一、group by

英 [ɡru:p bai]   美 [ɡrup baɪ]  

[计][WIN]分组依据

拓展资料

1、This operator also serves as input to the Group By operator.

该操作符还充当Group By操作符的输入。

2、Complete the following steps to create and program the Group By operator. 

完成以下步骤,创建Group By操作符并对它进行配置。

3、With the appropriate access path, the ORDER BY or GROUP BY requirement can be met without sorting. 

使用恰当的访问路径,无需排序即可满足ORDER BY或GROUP BY需求。

4、Drag it to the right of the Group By operator. 

将它拖放到Group By操作符的右边。

二、distinct

英 [dɪˈstɪŋkt]   美 [dɪˈstɪŋkt]  

adj.明显的,清楚的;卓越的,不寻常的;有区别的;确切的

拓展资料

1、I have distinct memories of him in his last years. 

我清楚地记得他最后几年的情况。

2、Another Cup marathon between the two sides is now a distinct possibility. 

双方很可能再进行一场马拉松式的优胜杯比赛。

3、The photograph showed a distinct image. 

照片显出了明晰的影像。

4、I want a distinct answer to my question. 

我要求对我的问题作出明确的答复。

参考技术A distinct意思是明显的,清楚的;卓越的,不寻常的;有区别的; 确切的。
group by表示分组依据,依据......分组。
二者在意思上有较大的区别。

例句:

distinct
1、Engineering and technology are disciplines distinct from one another and from science.
工程学和工艺学互不相同,也有别于自然学科。
2、Now that Tony was no longer present, there was a distinct change in her attitude.

由于托尼不在场了,她的态度有了明显的转变。
3、Being 6ft 3in tall has some distinct disadvantages!

身高6英尺3英寸有些明显的不便之处!
4、There's a lot of evidence that oily fish, as distinct from fatty meat, has a beneficialeffect.

有许多证据表明油性鱼,与高脂肪肉不同,对人体有益。

group by
1、You could get ejected from the group by the moderators.
你可能会被管理员逐出该组织。
2、You can contribute to a new palette group by typing in another palette group name.
您可以通过键入另一个工具板名称来促成一个新工具板组。
3、But she was gradually forced into a close association with the Franco-Russiangroup by the aggressive development of a great German navy.
但是,由于德国积极发展了一支强大的海军,大不列颠被迫逐渐形成与法俄集团的紧密联系。
4、This style emphasizes the importance of team work, and creates harmony in a group by connecting people to each other.

这种风格强调团队合作的重要性,并通过让人们彼此联系来营造团队中的和谐气氛。
参考技术B 其实二者没有什么可比性,但是对于不包含聚集函数的GROUP BY操作来说,和DISTINCT操作是等价的。不过虽然二者的结果是一样的,但是二者的执行计划并不相同。

distinct只是将重复的行从结果中出去;
group by是按指定的列分组,一般这时在select中会用到聚合函数。

distinct是把不同的记录显示出来。
group by是在查询时先把纪录按照类别分出来再查询。

group by 必须在查询结果中包含一个聚集函数,而distinct不用。

--每个部门有多少钱
select sum(钱),部门 from table
group by 部门

结果:部门1 130
部门2 100

--把相同的记录不显示出来,只选择此两列唯一的
select distinct 部门,钱 from table

结果:部门1 100
部门1 15
部门2 100

--而实际此表存在的记录如下:select * from table
结果:部门1 100
部门1 15
部门1 15
部门2 100

仔细比对一下,就清楚了。本回答被提问者采纳

MySQL DISTINCT关键字详解:用法实际应用和与GROUP BY的区别

目录

"Success is not how high you have climbed, but how you make a positive difference to the world." 成功不在于你爬得多高,而在于你对世界做出了多大的积极影响。 - Roy T. Bennett

一、DISTINCT关键字

1.定义

MySQL中的DISTINCT关键字用于消除重复记录,并返回唯一的记录集。DISTINCT关键字可以用在SELECT语句的开头,并在查询结果中显示唯一的行。

2.使用场景

DISTINCT关键字通常用于在查询中返回不同的记录。例如,在数据库中有多个重复的记录,但您只需要返回一份,则可以使用DISTINCT关键字。

二、用法

1.基本用法

DISTINCT关键字的基本用法如下:

SELECT DISTINCT column_name FROM table_name;

在上面的代码中,column_name是需要查询的列,table_name是表的名称。该语句将返回所有唯一的column_name值。

2.DISTINCT在多列上的使用

如果我们需要查询多个列的唯一值,则可以在多个列上使用DISTINCT关键字。代码如下:

SELECT DISTINCT column1, column2 FROM table_name;

在上面的代码中,column1column2是需要查询的列,table_name是表的名称。该语句将返回两个列中所有唯一的组合。

3.DISTINCT和GROUP BY的区别

DISTINCT和GROUP BY都用于去除重复记录,但它们的工作方式不同。DISTINCT是在查询结果集的基础上去除重复记录,并返回唯一的记录集。而GROUP BY是在查询过程中对结果集进行分组,并返回每组的聚合值。

三、实际应用场景

假设我们有一张订单表,表结构如下,并填充数据。

CREATE TABLE orders (
  order_id INT AUTO_INCREMENT PRIMARY KEY,
  customer_name VARCHAR(255) NOT NULL,
  product VARCHAR(255) NOT NULL,
  quantity INT NOT NULL,
  order_date DATE NOT NULL
);

INSERT INTO orders (customer_name, product, quantity, order_date)
VALUES
  ('John Doe', 'iPhone', 2, '2022-01-01'),
  ('John Doe', 'Macbook', 1, '2022-01-02'),
  ('Jane Doe', 'iPad', 1, '2022-01-03'),
  ('Jane Doe', 'iPad', 2, '2022-01-04'),
  ('John Doe', 'iPad', 1, '2022-01-05');


1.查询唯一的记录

如果我们想查询所有客户的姓名,但不想重复。

SELECT DISTINCT customer_name
FROM orders;


执行结果:

2.统计不同的值

如果我们想知道每个客户订购的不同产品的数量。

SELECT customer_name, COUNT(DISTINCT product)
FROM orders
GROUP BY customer_name;

执行结果:

四、总结

MySQL的DISTINCT关键字用于消除重复记录,并返回唯一的记录集。DISTINCT关键字通常用于在查询中返回不同的记录,例如查询不同的客户国家或统计不同的产品数量。通过使用DISTINCT关键字,可以简化SQL语句并显著提高查询效率。

总之,MySQL DISTINCT关键字是一种强有力的工具,能够快速、方便地消除重复记录,并返回想要的结果。学会使用DISTINCT关键字,不仅可以提高SQL技能,也能帮助我们在开发中解决复杂的问题。

以上是关于distinct和group by的区别的主要内容,如果未能解决你的问题,请参考以下文章

group by与distinct有何区别

GROUP BY 和 DISTINCT 之间有啥区别吗

group by与distinct有何区别

MySQL DISTINCT关键字详解:用法实际应用和与GROUP BY的区别

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

MySQL DISTINCT关键字详解:用法实际应用和与GROUP BY的区别