MySQL關(guān)鍵字Distinct的詳細(xì)介紹
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ù)期期望,沒有篩選掉重復(fù)的字段值alibaba;
第二種情況,使用Distinct關(guān)鍵字(在后),查詢多列數(shù)據(jù),如下圖所示:
結(jié)果:對(duì) name 字段進(jìn)行去重處理,結(jié)果不符合預(yù)期期望,拋出SQL異常,錯(cuò)誤碼:1064;
解決辦法:
不要用子查詢,用分組來解決:
總結(jié): SQL查詢能用一條語句解決的盡量不要增加SQL的復(fù)雜度,特別是子查詢!??!
以上就是關(guān)于MySQL關(guān)鍵字Distinct用法的講解,如有疑問,請(qǐng)留言或者到本站設(shè)討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
MySQL連接器提升應(yīng)用功能與數(shù)據(jù)存儲(chǔ)能力
這篇文章主要為大家介紹了MySQL連接器提升應(yīng)用功能與數(shù)據(jù)存儲(chǔ)能力,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10完美解決mysql in條件語句只讀取一條信息問題的2種方案
使用mysql多表查詢時(shí)一個(gè)表中的某個(gè)字段作為另一表的in查詢條件,只能讀取一條信息,而直接用數(shù)字的話可以正常讀取2018-04-04

MySQL數(shù)據(jù)庫基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解

MySQL長(zhǎng)字符截?cái)嗟膶?shí)現(xiàn)示例