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