MySQL关键字Distinct的详细介绍

 更新时间:2017年07月19日 10:55:11   投稿:lqh  
这篇文章主要介绍了MySQL关键字Distinct的详细介绍的相关资料,需要的朋友可以参考下

MySQL关键字Distinct用法介绍

DDL

Prepare SQL:

create table test(id bigint not null primary key auto_increment,
   name varchar(10) not null,
   phone varchar(10) not null,
   email varchar(30) not null)engine=innodb;

Prepare Data:

 insert into test(name, phone, email)values('alibaba','0517','alibaba@alibaba.com');
  insert into test(name, phone, email)values('alibaba','0517','alibaba@alibaba.com');
  insert into test(name, phone, email)values('baidu','010','baidu@baidu.com');
  insert into test(name, phone, email)values('tencent','0755','tencent@tencent.com');
  insert into test(name, phone, email)values('vipshop','020','vipshop@vipshop.com');
  insert into test(name, phone, email)values('ctrip','021','ctrip@ctrip.com');
  insert into test(name, phone, email)values('suning','025','suning@suning.com');

查询数据如下图所示:

鏌ヨ鎻掑叆鐨勬暟鎹? title=

第一种情况,使用Distinct关键字,查询单列数据,如下图所示:

浣跨敤鍏抽敭瀛楀崟鍒楁煡璇? title=

结果:对 name 字段进行去重处理,符合预期期望,确实筛选掉了重复的字段值alibaba;

第二种情况,使用Distinct关键字(在前),查询多列数据,如下图所示:

浣跨敤鍏抽敭瀛楀鍒楁煡璇? title=

结果:对 name 字段进行去重处理,结果不符合预期期望,没有筛选掉重复的字段值alibaba;

第二种情况,使用Distinct关键字(在后),查询多列数据,如下图所示:

浣跨敤鍏抽敭瀛楀鍒楁煡璇? title=

结果:对 name 字段进行去重处理,结果不符合预期期望,抛出SQL异常,错误码:1064;

解决办法:

不要用子查询,用分组来解决:

瑙e喅鏂瑰紡

总结: SQL查询能用一条语句解决的尽量不要增加SQL的复杂度,特别是子查询!!!

以上就是关于MySQL关键字Distinct用法的讲解,如有疑问,请留言或者到本站设讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • MySQL SQL语句分析与查询优化详解

    MySQL SQL语句分析与查询优化详解

    这篇文章主要介绍了MySQL SQL语句分析查询优化,需要的朋友可以参考下
    2018-03-03
  • mysql字符串的‘123’转换为数字的123的实例

    mysql字符串的‘123’转换为数字的123的实例

    下面小编就为大家带来一篇mysql字符串的‘123’转换为数字的123的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 一次Mysql死锁排查过程的全纪录

    一次Mysql死锁排查过程的全纪录

    在测试环境测试给用户并发发送卡券时,出现了死锁,通过查找相关的资料解决了这个,所以想着总结出来,所以下面这篇文章主要是关于一次Mysql死锁排查过程的全纪录,需要的朋友可以参考下,希望大家从中能有所帮助。
    2017-02-02
  • mysql中datetime类型设置默认值方法

    mysql中datetime类型设置默认值方法

    下面小编就为大家分享一篇mysql中datetime类型设置默认值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • mysql 5.7版本修改密码的简单方法

    mysql 5.7版本修改密码的简单方法

    这篇文章主要介绍了mysql 5.7版本修改密码的简单方法,需要的朋友可以参考下
    2017-07-07
  • MySQL8.0.23免安装版配置详细教程

    MySQL8.0.23免安装版配置详细教程

    这篇文章主要介绍了MySQL8.0.23免安装版配置教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Mysql数据库实现多字段过滤的方法

    Mysql数据库实现多字段过滤的方法

    这篇文章主要介绍了Mysql数据库实现多字段过滤的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 深入浅出的学习Mysql

    深入浅出的学习Mysql

    最近看了一本小书,网易技术部的《深入浅出MySQL数据库开发、优化与管理维护》,算是回顾一下mysql基础知识。下面这篇文章主要介绍了学习Mysql的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • Mac下忘记Mysql的root用户密码的解决方法

    Mac下忘记Mysql的root用户密码的解决方法

    mac中安装MySQL时系统会自动为root 账户生成一个密码(改密码一般为一个不好记的字符串),若自己没有记住改密码,这时 mysql 就无法进入了。解决方案是修改root 账户的密码,问题是mysql进不去如何修改,下面就是改问题的解决方法:
    2017-03-03
  • MySQL索引类型总结和使用技巧以及注意事项

    MySQL索引类型总结和使用技巧以及注意事项

    索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型
    2014-04-04

最新评论