首页 > 数据库 >MySQL DISTINCT关键字详解:用法、实际应用和与GROUP BY的区别

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

时间:2023-02-08 17:00:49浏览次数:52  
标签:返回 01 GROUP name DISTINCT 查询 关键字 MySQL

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

img

一、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;


执行结果:

image-20230208164406326

2.统计不同的值

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

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

执行结果:

image-20230208164450171

四、总结

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

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

标签:返回,01,GROUP,name,DISTINCT,查询,关键字,MySQL
From: https://blog.51cto.com/u_13738137/6044652

相关文章

  • Mysql数据库备份恢复
    一、使用musqldump对数据库、数据库表、一个数据库多个表、所以数据库备份、模拟数据丢失二、配置mysql数据库开启二进制日志功能,配置二进制日志切割,配置跟二进制恢复数据,居......
  • MySQL 升级最佳实践 --- MySQL 5.6升级至MySQL 8.0
    MySQL升级最佳实践---MySQL5.6升级至MySQL8.0背景介绍MySQL8.0新特性数据字典更改MySQLServer8.0合并了一个全局数据字典,其中包含有关事务表中数据库对象的信息。......
  • CF #727(div2)C. Stable Groups,贪心,排序
    problemC.StableGroupstimelimitpertest1secondmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputTherearenstudentsnumerated......
  • MySQL中sp运行check表版本更新流程解析
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:wuyy文章来源:GreatSQL社区原创目录......
  • mysql嵌套查询更新
    先上个mysql报错sql语句UPDATEt_stub_groupSETFRANCHISE=1WHEREIDIN(SELECTIDFROMt_stub_groupWHEREMODIFY_TIME<'2023-02-0804:05:12')报错信息109......
  • mycat+MySQL主从读写分离
    Mycat应用场景Mycat发展到现在,适用的场景已经很丰富,而且不断有新用户给出新的创新性的方案,以下是几个典型的应用场景:单纯的读写分离,此时配置最为简单,支持读写分离,主从切......
  • group by 、concat_ws()、 group_caoncat()的使用
    group系列之前觉得这里简单不需要再进行总结了。后来发现还是需要总结巩固一下,还是有一些方法之类的之前未使用过。这里来重新整理,记录一下。groupby将表中的数据根......
  • 基于mysql纯java的智能题库(后期填写注释)
    1packagecontroller;23importadmin.entity.Admin;4importadmin.service.AdminService;5importadmin.service.impl.AdminServiceImpl;6import......
  • 云时代,最好用的MySQL客户端工具推荐
    数据库图形客户端(GUI)工具,可以大大帮助开发者提升SQL编写与开发的效率。在云时代,企业越来越多的开始采用RDS,同时也还有部分本地IDC自建数据库,而在云端也会选择/尝试多个不同......
  • 【MySQL高级】索引优化
    目录​​1.使用索引优化​​​​1.1数据准备​​​​1.2避免索引失效应用-全值匹配​​​​1.3避免索引失效应用-最左前缀法则​​​​1.4避免索引失效应用-其他匹配原则​......