假設(shè):查詢一個(gè)結(jié)果集當(dāng)中,要求三個(gè)字段同時(shí)不重復(fù),即當(dāng) 字段1=A 時(shí),字段2=B 那么其他記錄中不再出現(xiàn)字段1=A 并且字段2=B的情況。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了延川免費(fèi)建站歡迎大家使用!
select *, count(distinct name) from table group by name
這個(gè) 你想去除那些重復(fù) 就直接在 distinct 后面 后group by 后面加 就可以了
重復(fù)值的原因:
一般就是連接的過程中連接條件出問題或者where語(yǔ)句有問題,所以最好檢查一下,并且建議從簡(jiǎn)單的表開始關(guān)聯(lián),不要一次性關(guān)聯(lián)太多表,會(huì)使邏輯復(fù)雜。
解決方法:
多表連接查詢,且去掉重復(fù)列,使用? USING(),代碼如下:
select * from (select * from school left join course USING (courseid)) e left join student USING (studentid);
select * from school left join course USING (courseid)相當(dāng)于
select * from school left join course on school.courseid=course.courseid;
擴(kuò)展資料:
常用語(yǔ)句:
1、新建用戶:
CREATE USER name IDENTIFIED BY 'ssapdrow';
2、更改密碼:
SET PASSWORD FOR name=PASSWORD('fdddfd');
3、權(quán)限管理
SHOW GRANTS FOR name;//查看name用戶權(quán)限
GRANT SELECT ON db_name.* TO name;//給name用戶db_name數(shù)據(jù)庫(kù)的所有權(quán)限
REVOKE SELECT ON db_name.* TO name;//GRANT的反操作,去除權(quán)限;
一、數(shù)據(jù)庫(kù)操作:
1、查看數(shù)據(jù)庫(kù):
SHOW DATABASES;
2、創(chuàng)建數(shù)據(jù)庫(kù):
CREATE DATABASE db_name;//db_name為數(shù)據(jù)庫(kù)名
3、使用數(shù)據(jù)庫(kù):
USE db_name;
4、刪除數(shù)據(jù)庫(kù):
DROP DATABASE db_name;
一張user表 中的name字段,里面有10個(gè)張三。我要只查詢出一個(gè)張三。
SQL: select distinct name from user
如果還要查詢出id
SQL: select distinct name,id from user
SQL :select name from user group by name
group by理解:表里的某一個(gè)字段(比如:name) 當(dāng)出現(xiàn)相同的數(shù)據(jù)時(shí),group by就將這2條數(shù)據(jù)合二為一。name就顯示一條 數(shù)據(jù)了。 但是name達(dá)到合二為一了,這2條數(shù)據(jù)的其他數(shù)據(jù)怎么辦呢? 這時(shí)候需要配合聚合函數(shù)的使用。
where條件:分組前的條件,配合任何關(guān)鍵字使用
Having 條件:分組后的條件 (事后條件) ,只配合group by使用。having條件通常使用聚合函數(shù)
SQL :select deptno,sum(sal) from emp group by deptno having sum(sal) 9000;
SQL: select deptno,count(*) from emp where sal 1000 group by deptno haing sum(sal) 8000
拓展:
聚合函數(shù)定義:聚合函數(shù)對(duì)一組值進(jìn)行計(jì)算并返回單一的值。(以下都屬于聚合函數(shù))
count(*) : 不包括空值。返回對(duì)行數(shù)目的計(jì)數(shù)。計(jì)算出有多少行,多少條數(shù)據(jù)。
count() : 包含空值。返回對(duì)數(shù)目的計(jì)數(shù)。計(jì)算表里有多少行,相當(dāng)于多少條數(shù)據(jù)。
sum() : 求和運(yùn)算
max(); 最大值
min(): 最小值
avg(): 平均值