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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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技能,也能帮助我们在开发中解决复杂的问题。

以上是关于MySQL DISTINCT关键字详解:用法实际应用和与GROUP BY的区别的主要内容,如果未能解决你的问题,请参考以下文章

mysql中去重 distinct 用法

mysql中去重 用group by优化distinct 用法

mysql中去重 distinct 用法

MySql中distinct的用法

mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留

SQL中distinct的用法