精华内容
下载资源
问答
  • MySQL去重数据
    2021-01-19 02:59:32

    导读

    DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已。所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没有太大的区别。同样可以通过松散索引扫描或者是紧凑索引扫描来实现,当然,在无法仅仅使用索引即能完成 DISTINCT 的时候,MySQL 只能通过临时表来完成。但是,和 GROUP BY 有一点差别的是,DISTINCT 并不需要进行排序。

    在使用 MySQL SELECT 语句查询数据的时候返回的是所有匹配的行。

    查询 tb_students_info 表中所有 age 的执行结果如下所示。

    mysql> SELECT age FROM tb_students_info;

    +------+

    | age  |

    +------+

    |   25 |

    |   23 |

    |   23 |

    |   22 |

    |   24 |

    |   21 |

    |   22 |

    |   23 |

    |   22 |

    |   23 |

    +------+

    10 rows in set (0.00 sec)

    可以看到查询结果返回了 10 条记录,其中有一些重复的 age 值,有时出于对数据分析的要求,需要消除重复的记录值。这时候就需要用到 DISTINCT 关键字指示 MySQL 消除重复的记录值,语法格式为:

    SELECT DISTINCT  FROM ;

    查询 tb_students_info 表中 age 字段的值,返回 age 字段的值且不得重复,输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT DISTINCT age FROM tb_students_info;

    +------+

    | age  |

    +------+

    |   25 |

    |   23 |

    |   22 |

    |   24 |

    |   21 |

    +------+

    5 rows in set (0.11 sec)

    由运行结果可以看到,这次查询结果只返回了 5 条记录的 age 值,且没有重复的值。

    更多相关内容
  • MySQL去重distinct

    2021-02-04 16:30:47
    去重MySQL中需要查询表中不重复的记录时,可以使用distinct关键字过滤重复记录。语法:select distinct [,...,] from ;数据表如下:mysql> select * from emp;+-------+--------+------------+------+---------...

    984f377aba90

    去重

    在MySQL中需要查询表中不重复的记录时,可以使用distinct关键字过滤重复记录。

    语法:

    select distinct [,...,] from ;

    数据表如下:

    mysql> select * from emp;

    +-------+--------+------------+------+------------+------+------+--------+

    | empno | ename | job | mgr | hiredate | sal | comm | deptno |

    +-------+--------+------------+------+------------+------+------+--------+

    | 7369 | smith | clerk | 7902 | 1980-12-17 | 800 | NULL | 20 |

    | 7499 | allen | salesman | 7698 | 1981-02-20 | 1600 | 300 | 30 |

    | 7521 | ward | salesman | 7698 | 1981-02-22 | 1250 | 500 | 30 |

    | 7566 | jones | manager | 7839 | 1981-04-02 | 2975 | NULL | 20 |

    | 7654 | martin | salesman | 7698 | 1981-09-28 | 1250 | 1400 | 30 |

    | 7698 | blake | manager | 7839 | 1981-05-01 | 2850 | NULL | 30 |

    | 7782 | clark | manager | 7839 | 1981-06-09 | 2450 | NULL | 10 |

    | 7788 | scott | analyst | 7566 | 1987-04-19 | 3000 | NULL | 20 |

    | 7839 | king | persident | NULL | 1981-11-17 | 5000 | NULL | 10 |

    | 7844 | turner | salesman | 7698 | 1981-09-08 | 1500 | 0 | 30 |

    | 7876 | adams | clerk | 7788 | 1987-05-23 | 1100 | NULL | 20 |

    | 7900 | james | clerk | 7698 | 1981-12-03 | 950 | NULL | 30 |

    | 7902 | ford | analyst | 7566 | 1981-12-03 | 3000 | NULL | 20 |

    | 7934 | miller | clerk | 7782 | 1982-01-23 | 1300 | NULL | 10 |

    +-------+--------+------------+------+------------+------+------+--------+

    示例1:单个字段去重

    mysql> select distinct deptno from emp;

    +--------+

    | deptno |

    +--------+

    | 20 |

    | 30 |

    | 10 |

    +--------+

    mysql> select distinct job from emp;

    +------------+

    | job |

    +------------+

    | clerk |

    | salesman |

    | manager |

    | analyst |

    | persident |

    +------------+

    示例2:多个字段去重

    mysql> select distinct deptno,job from emp;

    +--------+------------+

    | deptno | job |

    +--------+------------+

    | 20 | clerk |

    | 30 | salesman |

    | 20 | manager |

    | 30 | manager |

    | 10 | manager |

    | 20 | analyst |

    | 10 | persident |

    | 30 | clerk |

    | 10 | clerk |

    +--------+------------+

    多个字段去重时,distinct关键字必须位于第一个字段前,多个字段完全一样的情况下,才会过滤。

    非重复计数:

    select count(distinct [,...,]) from ;

    示例:

    mysql> select count(distinct deptno,job) from emp;

    +----------------------------+

    | count(distinct deptno,job) |

    +----------------------------+

    | 9 |

    +----------------------------+

    展开全文
  • select查询语法格式1、去重查询2、过滤数据3、常数的查询4、分组查询5、限制查询第一种:LIMIT 记录数 [OFFSET 偏移量] ;第二种:LIMIT [偏移量,]记录数;算术运算符1、通配符过滤2、排序语法格式//剔除查询结果中...

    select查询

    语法格式

    1、去重查询

    2、过滤数据

    3、常数的查询

    4、分组查询

    5、限制查询

    第一种:LIMIT 记录数 [OFFSET 偏移量] ;

    第二种:LIMIT [偏移量,]记录数;

    算术运算符

    1、通配符过滤

    2、排序

    语法格式

    //剔除查询结果中重复的数据

    SELECT [DISTINCT] * | {字段名1,字段名2,字段名3,……} FROM 表名

    “|” 意为或者,二选一

    //指定查询的条件

    [WHERE 条件表达式1]

    //对字段进行分组

    [GROUP BY 字段名] or [HAVING 条件表达式2]

    //升降序排列

    默认为升序ASC [ORDER BY 字段名][ASC升|DESC降]

    //记录数

    [LIMIT [OFFSET记录数] or [LIMIT[记录数,偏移量]]

    1、去重查询

    SELECT [DISTINCT] * | {字段名1,字段名2,……}

    字段名1,字段名2,……FROM表名

    select distinct id ,name from products;

    DISTINCT,可选参数,用于剔除查询结果中重复的数据

    在SELECT查询语句中DISTINCT关键字只能用在第一个所查列名之前。

    星号*通配符,表示表中的所有字段 “|” 为或者,互斥关系,二选一

    2、过滤数据

    WHERE条件表达式,可选参数,用于指定查询的条件

    select name,price from products where price = 2;

    3、常数的查询

    在SELECT中除了书写列名,还可以书写常数

    SELECT ‘2020-05-20’,9999,sname FROM student;

    4、分组查询

    GROUP BY字段名 [HAVING 条件表达式2]

    select*from student where group by name;

    SELECT ename, sal * 12 AS yearSalary FROM emp ORDER BY yearSalary;

    GROUP BY,可选参数,用于将查询结果按照指定字段进行分组

    HAVING,可选参数,用于对分组后的结果进行过滤

    5、限制查询

    第一种:LIMIT 记录数 [OFFSET 偏移量] ;

    select name from products limit 5;

    注:limit 5 表示 查询结果不超过5行

    第二种:LIMIT [偏移量,]记录数;

    select ame from products limit 5,5;

    注:从第五行开始,查询5行

    LIMIT,可选参数,用于限制查询结果的数量

    LIMIT后面可以跟两个参数,第一个参数OFFSET表示偏移量,如果偏移量为0,则从查询结果的第一条记录开始,偏移量为1,则从查询结果的第二条记录开始,以此类推

    OFFSET,可选参数,如果不指定其默认值为0

    第二个参数,记录数表示返回查询记录的条数

    算术运算符

    在SELECT查询语句中还可以使用加减乘除运算符

    – 查询20年后各学生的年龄大小

    SELECT sname,age+20 FROM student;

    1、通配符过滤

    最常使用的通配符是百分号(%)。在搜索串中,%表示任何字符出现任意次数

    select id, name from products where name like ‘j%’;

    2、排序

    ORDER BY 字段名 [ASC | DESC]

    select * from stu where order by money ASC;

    ORDER BY,可选参数,用于将查询结果按照指定字段进行排序

    排序方式由参数ASC或DESC控制,其中,ASC表示按升序进行排列,DESC表示按降序进行排列,如果不指定参数,默认为升序排列

    展开全文
  • MYSQL去重方法汇总

    千次阅读 2022-04-21 21:03:18
    表数据 备注: id: 任务id; name: 参与人name; ...-- 根据任务ID去重 ...它不适合用来展示去重后具体的值,一般与 count 配合用来...distinct 使用中,放在 select 后边,对后面所有的字段的值统一进行去重。比如distinc

    表数据

    在这里插入图片描述

    备注:

    • id: 任务id;
    • name: 参与人name;

    1:distinct

    1.1

    -- 根据任务ID去重
    SELECT DISTINCT id FROM test;
    

    在这里插入图片描述

    1.2

    -- 任务总数
    SELECT COUNT(DISTINCT id) FROM test;
    

    在这里插入图片描述

    1.3

    distinct 通常效率较低。它不适合用来展示去重后具体的值,一般与 count 配合用来计算条数
    distinct 使用中,放在 select 后边,对后面所有的字段的值统一进行去重。比如distinct后面有两个字段,那么 11,11 和 11, 21 这两条记录不是重复值

    SELECT DISTINCT id, name FROM test;
    

    在这里插入图片描述

    2: group by

    2.1

    SELECT id, name, count(*) FROM test
    GROUP BY id;
    

    在这里插入图片描述

    -- 任务总数
    SELECT
    	count( tmp.id ) 
    FROM
    	( SELECT id, NAME FROM test GROUP BY id ) tmp
    

    在这里插入图片描述

    3:row_number

    row_number 是窗口函数,语法如下:
    row_number() over (partition by <用于分组的字段名> order by <用于组内排序的字段名>) 其中partition by 部分可省略

    SELECT 
    	id,
    	name,
    	ROW_NUMBER() over (ORDER BY id) rn
    FROM test
    

    在这里插入图片描述

    SELECT 
    	id,
    	name,
    	ROW_NUMBER() over (PARTITION by id ORDER BY id) rn
    FROM test
    

    在这里插入图片描述

    SELECT
    	COUNT( CASE WHEN rn = 1 THEN id ELSE NULL END ) count 
    FROM
    	( SELECT id, NAME, ROW_NUMBER() over ( PARTITION BY id ORDER BY id ) rn FROM test ) tmp
    

    在这里插入图片描述

    展开全文
  • DISTINCT 实际上和 GROUP BY 操作的实现...同样可以通过松散索引扫描或者是紧凑索引扫描来实现,当然,在无法仅仅使用索引即能完成 DISTINCT 的时候,MySQL 只能通过临时表来完成。但是,和 GROUP BY 有一点差别的...
  • mysql去重多个字段

    千次阅读 2021-01-20 14:56:25
    mysql去重多个字段源表:select distinct id , name, phone from chongfubiao_quchong;select distinct * from chongfubiao_quchong;不合适的命令:distinct(*)命令 #语法错误[Err] 1064 - You have an error in ...
  • 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 DISTINCT 语法: 关键词 distinct用于返回唯一不同的值。 表结构 案例 SELECT DISTINCT age FROM emp1 SELECT DISTINCT age ,NAME FROM ...
  • MySQL是Java程序员面向高级的必备技能,很多朋友在面试时经常在这里折戟沉沙,饮恨不已。熟练掌握MySQL知识,在实践中具有很强的操作性,尤其是在互联网行业,不仅要写好代码、实现功能,而且还要在高并发的情况下...
  • MySQL去重语句

    2019-01-09 21:24:52
    按照某个键值将最小ID创建新表储存: create table tmp_table as select min(id) from wp_posts group by post_title; 然后将储存在tmp中的id与原表对照,将原表中不存在与tmp中的id删除: delete from wp_posts ...
  • 1、DISTINCT介绍:在表中,一个列可能会包含多个重复值,有时...DISTINCT 语法如下所示:SELECT DISTINCT column_name FROM table_name;2、DISTINCT使用注意事项:distinct 语句中 select 显示的字段只能是 distin...
  • MySQL去重:DISTINCT语句

    2020-08-21 22:32:28
    DISTINCT 语法如下所示: SELECT DISTINCT column_name FROM table_name; 2、DISTINCT使用注意事项: distinct 语句中 select 显示的字段只能是 distinct 指定的字段,其他字段是不可能出现的。如下所示: ...
  • MySQL8.0 去重

    2022-03-17 17:59:24
    最近有个需求就是去重获取MySQL中企业的报表数据,同一个企业的报表可以有多个,获取最新的报表数据,这里数据库的版本是8.0。 这里模拟下需求,创建数据库表 test : create table test ( id int auto_increment ...
  • mySQL去重和计数

    2018-02-01 16:50:00
    Distinct的作用是用于从指定集合中消除重复的元组,经常和count搭档工作,语法如下 COUNT( { [ ALL | DISTINCT ] expression ] | * } ) 这时,可能会碰到如下情况,你想统计同时有多列字段重复的数目,你可能会...
  • MySQL 对数据去重

    2021-01-28 22:38:06
    在使用 MySQL 存储数据的时候,经常会遇到 table 中存在重复数据的情况,这个时候,我们就对 table 进行去重,我这里对常用的 MySQL 去重方法做一个简单的总结。distinctselect distinct key from tableselect ...
  • 今天的这篇文章,壹哥会给大家讲解数据库查重、去重相关的面试题,这属于使用技巧类的题目,大家记住实现方式即可。 要想在MySQL中去除重复数据,我们可以先把表中存在的重复数据给查出来,所以接下来壹哥先给大家...
  • Mysql如何去重

    万次阅读 2019-08-20 17:46:53
    MySQL对数据去重的方法 在使用 MySQL 存储数据的时候,经常会遇到 table 中存在重复数据的情况,这个时候,我们就对 table 进行去重,我这里对常用的 MySQL 去重方法做一个简单的总结。 distinct select ...
  • Mysql去重数据管理数据准备数据新的改变准备存储过程插入10万数据使用mysql自带的分析函数给num字段添加索引 准备数据 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器...
  • MySql查询去重

    2021-04-20 13:14:42
    MySql查询去重题外话,对你们来说很简单,可是对我来说很重要,所以100分,谢谢!测试通过就结贴给分问题是这样的:表t_useruser_mobile //用户手机号service_id //服务编号 1-高级用户,2普通用户//由于历史原因,会员可以...
  • 补充:postgresql流复制主从切换+resetxlog主 192.168.3.46从 192.16 2021-01-16 12:21:25 create user的语法CREATE USER name [ [ WITH ] option [ ... ] ] where option can be: SUPERUSER | NOSUPERUSER | ...
  • mysql去重函数:DISTINCT ,与GROUP_CONCAT结合创建表语法distinct多字段去重 创建表 DROP TABLE IF EXISTS `qipa_shop`; CREATE TABLE `qipa_shop` ( `price` varchar(255) CHARACTER SET utf8mb4 COLLATE utf...
  • 新增所有列的记录:● 语法:insert into 表名称 values (值1,值2,值3,...值n);● 例子:insert into user values(‘张三’,‘演员’,22,‘男’);注意:必须把所有列都进行新增,并且新增值的顺序需要与建表时列的...
  • 来自:blog.csdn.net/xienan_ds_zj/article/details/103869048在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重。在 MySQL 中通常是使用 distinct 或 group by子句...
  • 在使用 MySQL 存储数据的时候,经常会遇到 table 中存在重复数据的情况,这个时候,我们就对 table 进行去重,我这里对常用的 MySQL 去重方法做一个简单的总结。 1、distinct select distinct key from table; ...
  • mysql中对数据的去重

    万次阅读 2019-08-17 15:31:40
    最近面试有家公司问了个mysql的数据去重,自己对于mysql一般多用于增删改查,所以私下来尝试了mysql数据的去重总结 DISTINCT 在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,041
精华内容 8,016
关键字:

mysql去重语法

mysql 订阅