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;
 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的复杂度,特别是子查询!!!

更多相关文章

  1. python list.sort()根据多个关键字排序的方法实现
  2. 安卓shape属性详细介绍
  3. android 报错Attempt to invoke virtual method
  4. android实现关键字搜索功能
  5. Android(安卓)搜索到的关键字改变颜色
  6. Android(安卓)之 Project Butter 详细介绍
  7. Android(安卓)smali语言功能指令详细介绍
  8. Android(安卓)关键字 收集
  9. Android(安卓)Fragments 详细使用详细介绍

随机推荐

  1. Android中背景选择器
  2. JavaScript与Android之间的交互
  3. Android(安卓)开发网址收藏
  4. Android的View动画
  5. SimpleAdapter
  6. Android:ADT 22.2.1 发布
  7. 《Android 开发艺术探索》笔记2--IPC机制
  8. android控件的边框设置
  9. Android(安卓)SDK r21.1 发布
  10. 代码回收站