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 常见命令和学习心得

    mysql 常见命令和学习心得

    mysql 常见命令和学习心得,学习php的朋友需要了解的一些基础,方便日后的开发。
    2009-09-09
  • 你有没有遗忘mysql的历史记录

    你有没有遗忘mysql的历史记录

    程序出现了问题,明知道可能是sql语句造成的,但是因为框架的原因,分析起来十分麻烦,于是打算直接查看数据库里面的历史记录.
    2014-09-09
  • MySQL BETWEEN AND踩坑记录

    MySQL BETWEEN AND踩坑记录

    这篇文章主要介绍了MySQL BETWEEN AND踩坑记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • order by + limit分页时数据重复问题及解决方法

    order by + limit分页时数据重复问题及解决方法

    这篇文章主要介绍了order by + limit分页时数据重复,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • mysql高效查询left join和group by(加索引)

    mysql高效查询left join和group by(加索引)

    这篇文章主要给大家介绍了关于mysql高效查询left join和group by,这个的前提是加了索引,以及如何在MySQL高效的join3个表 的相关资料,需要的朋友可以参考下
    2021-06-06
  • mysql的查询缓存说明

    mysql的查询缓存说明

    mysql的Query Cache有其特殊的业务场景,也不像其他数据库产品,缓存查询语句的执行计划等信息,而是直接缓存查询语句的记录集和对应的SQL语句
    2013-02-02
  • Mysql提权的多种姿势汇总

    Mysql提权的多种姿势汇总

    这篇文章主要给大家介绍了关于Mysql提权的多种姿势,姿势包括写入Webshell、UDF提权以及MOF提权,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • SQL字符型字段按数字型字段排序实现方法

    SQL字符型字段按数字型字段排序实现方法

    由于是按字母顺序排列,所以123排在了2的前面,显然不符合我们的要求,那么怎样才能按照我们预想的数字顺序排序呢
    2013-03-03
  • MySQL通过DQL实现对数据库数据的条件查询

    MySQL通过DQL实现对数据库数据的条件查询

    这篇文章给大家介绍了MySQL如何通过DQL进行数据库数据的条件查询,文中通过代码示例和图文结合介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • Mysql如何查询锁表

    Mysql如何查询锁表

    这篇文章主要介绍了Mysql如何查询锁表问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论