MySQL關(guān)鍵字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');
查詢數(shù)據(jù)如下圖所示:
第一種情況,使用Distinct關(guān)鍵字,查詢單列數(shù)據(jù),如下圖所示:
結(jié)果:對(duì) name 字段進(jìn)行去重處理,符合預(yù)期期望,確實(shí)篩選掉了重復(fù)的字段值alibaba;
第二種情況,使用Distinct關(guān)鍵字(在前),查詢多列數(shù)據(jù),如下圖所示:
結(jié)果:對(duì) name 字段進(jìn)行去重處理,結(jié)果不符合預(yù)期期望,沒(méi)有篩選掉重復(fù)的字段值alibaba;
第二種情況,使用Distinct關(guān)鍵字(在后),查詢多列數(shù)據(jù),如下圖所示:
結(jié)果:對(duì) name 字段進(jìn)行去重處理,結(jié)果不符合預(yù)期期望,拋出SQL異常,錯(cuò)誤碼:1064;
解決辦法:
不要用子查詢,用分組來(lái)解決:
總結(jié): SQL查詢能用一條語(yǔ)句解決的盡量不要增加SQL的復(fù)雜度,特別是子查詢?。。?/strong>
以上就是關(guān)于MySQL關(guān)鍵字Distinct用法的講解,如有疑問(wèn),請(qǐng)留言或者到本站設(shè)討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
您可能感興趣的文章:- MySQL如何基于Explain關(guān)鍵字優(yōu)化索引功能
- mysql執(zhí)行計(jì)劃id為空(UNION關(guān)鍵字)詳解
- jq.ajax+php+mysql實(shí)現(xiàn)關(guān)鍵字模糊查詢(示例講解)
- MySql帶OR關(guān)鍵字的多條件查詢語(yǔ)句
- mySQL之關(guān)鍵字的執(zhí)行優(yōu)先級(jí)講解