當前位置:首頁 » 編程語言 » sqldistinct兩個欄位
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqldistinct兩個欄位

發布時間: 2022-09-03 15:58:27

sql 兩個欄位去重

如果保證 o.name與c2.email_addr相同的其他表達式的值也相同,那就在select 後加上 distinct就可以了,distinct是剔除重復的記錄,即每個欄位或表達式的值都相同的只返回一條

㈡ SQL 用Distinct 查詢了兩個欄位,一個文本,一個數字,如何取最大的數字的幾條數據

select 文本欄位,max(數字欄位) from 表 group by 文本欄位

㈢ 用distinct查詢篩選去除資料庫兩個欄位重復的值,不成功,還是你把重復的值顯示出來了,應該怎麼處理呢

建議你把數據COPY出來,看是不是有什麼肉眼看不出來的字元在裡面。比如:尾部有空格!

㈣ SQL里的DISTINCT後面只能跟一條欄位名嗎

這個問題不好解決
1.因為你的ds還要用到 id content 這樣必須要在sql語句里出現這兩個欄位,不能只有title.
2.當sql中有這些欄位時,distinct是過濾它後面的所有列(欄位),這么多欄位中只要有一個欄位的內容是不同的,哪怕別的欄位都相同,都視為不相同的一條記錄,所以,想要過濾title是滿足不了要求的.group by 也不能滿足要求.group by 在這兒效果和distinct相同

㈤ sql查詢兩個欄位相同的記錄

EXCEL中用VBA連接ACCESS資料庫
有如下一張表,要分別查找出所有同名的人、所有同名並且學號也一樣的人以及所有同名但不同學號的人。

查詢所有同名人員
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1)
查詢結果:

查找所有姓名和學號兩個欄位都重復的人
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1) and [學號] in (SELECT [學號] FROM [18年考試成績] group by [學號] having count(學號)>1)
查詢結果:

查找所有姓名重復但學號不重復的人
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1) and [學號] not in (SELECT [學號] FROM [18年考試成績] group by [學號] having count(學號)>1)
注意:要把SELECT查詢子句配合in或not in 操作符使用,SELECT查詢子句只能有一列內容。
查詢結果:

其中子句 「SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1」是顯示所有重復的姓名,如果如下:

如果要知道重復出現次數,則可以這樣寫:
SELECT [姓名],count(姓名) as 出現次數 FROM [18年考試成績] group by [姓名] having count(姓名)>1
結果如下:

查找唯一記錄
group by [姓名],意思是按姓名分組,having count(姓名)>1 是分組條件,意思是姓名次數出現2次以上的重復內容以姓名進行分組,前面的count(姓名)是對分組以後的姓名統計出現次數。在後面要使用函數條件時應該使用having,而不是使用where
查找唯一值,比如本例的班級中,只有一個「四班」,要把這個四班的所有欄位顯示出來可以這樣:
select * from [18年考試成績] where 班級 not in (SELECT 班級 FROM [18年考試成績] group by 班級 having count(班級)>1)
結果:

如果使用「SELECT DISTINCT 班級 FROM [18年考試成績]」語句查詢唯一值,結果將會如下:

DISTINCT 會顯示不重復的值,如果有重復的,只顯示第一個,所以如果需要顯示僅出現一次的值並不適合使用SELECT DISTINCT語句
分組查詢語句:
比如要班級為單位,查詢每個班的總人數,科目總分,科目平均分等
SELECT [班級],count(姓名) as 班級人數,sum(語文) as 語文總成績,sum(數學) as 數學總成績,ROUND(avg(語文),1) as 語文平均分,ROUND(avg(數學),1) as 數學平均分 FROM [18年考試成績] group by [班級]
查詢結果如下:

注意:如果使用函數的欄位,不使用AS指定別名,將會自動生成一個欄位名,第一列名字Expr1000,第二列名為Expr1001,第三列名為Expr1002,以此類推
如:
SELECT [班級],count(姓名),sum(語文),sum(數學),ROUND(avg(語文),1) ,ROUND(avg(數學),1) FROM [18年考試成績] group by [班級]
查詢結果如下:

如果不指定別名,你將無法清楚在查詢結果中知道每一列是干什麼的。
如果需要再細分,查詢每個班女生總人數和科目平均分,只需要再加一個where條件就可以了
SELECT [班級],count(姓名) as 班級女性人數,ROUND(avg(語文),1) as 語文平均分,ROUND(avg(數學),1) as 數學平均分 FROM [18年考試成績] where 性別='女' group by [班級]

㈥ sql中如何distinct多個欄位

select a,b,c,min(d) d
from A
group by a,b,c

通過使用 group就可以出去相同的返回結果。

而且 distinct 的作用是針對整個集合的 並不是單個列

select distinct a,b,c,d
from A
這個出來的每條記錄都是唯一的,相同的都給去掉了。

㈦ SQL中distinct的用法是什麼

在表中,可能會包含重復值。這並不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。關鍵詞 distinct用於返回唯一不同的值。

表A:

返回的結果為兩行,這說明distinct並非是對xing和ming兩列「字元串拼接」後再去重的,而是分別作用於了xing和ming列。

3.COUNT統計

select count(distinct name) from A; --表中name去重後的數目, SQL Server支持,而Access不支持

count是不能統計多個欄位的,下面的SQL在SQL Server和Access中都無法運行。

select count(distinct name, id) from A;

若想使用,請使用嵌套查詢,如下:

select count(*) from (select distinct xing, name from B) AS M;

4.distinct必須放在開頭

select id, distinct name from A; --會提示錯誤,因為distinct必須放在開頭

5.其他

distinct語句中select顯示的欄位只能是distinct指定的欄位,其他欄位是不可能出現的。例如,假如表A有「備注」列,如果想獲取distinc name,以及對應的「備注」欄位,想直接通過distinct是不可能實現的。但可以通過其他方法實現關於SQL Server將一列的多行內容拼接成一行的問題討論

㈧ sql server distinct 過濾兩個欄位重復怎麼寫

後面跟多個欄位的話,就是要多個欄位同時重復才能過濾

其實道理很簡單,舉個例子,如果數據是
id name
1 aaa
2 aaa

select distinct id,name from tab
這個語句的返回結果必然是兩條,因為如果是1條的話,id 有兩個值,就沒法顯示,隨機取數這種事情如果沒有指令,資料庫自己是沒有這個功能的。

解決方法:
比如name相同的記錄,我要id最小的

select * from tab a where not exists (select 1 from tab where name = a.name and id < a.id)

搞定!

㈨ mysql 可以distinct兩個欄位嗎

這個不行,因為 (DISTINCT 欄位1,欄位2,欄位3) 只有(欄位1,欄位2,欄位3)完全相同時才會只顯示一個。如果要對(欄位1 & 欄位2) 同時DISTINCT 只能select DISTINCT 欄位1,欄位2 from table;