利用SQL在對數據做統計闡發的時辰,經常需要對數據進行過濾,篩選出不反復的記實,以及統計不反復的記實行數,那么,該若何實現呢?
建立一個姑且表,用于演示sqlserver語法中的去重關頭字distinct的利用。本文以sqlserver數據庫為例演示
IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1;
CREATE TABLE #tmp1(
Col1 varchar(50),
Col2 int
);
往姑且表中插入幾行測試數據,用于演示distinct的利用
insert into #tmp1(Col1, Col2) values('Code10', 10);
insert into #tmp1(Col1, Col2) values('Code20', 20);
insert into #tmp1(Col1, Col2) values('Code10', 10);
insert into #tmp1(Col1, Col2) values('Code5', 20);
查詢姑且表中所有的測試數據
select * from #tmp1;
利用distinct查詢出整個表所有字段值不反復的記實
select distinct * from #tmp1
distinct除了過濾整個表不反復的記實之外,還可以對指心猿意馬列去反復,多個列利用逗號分隔即可
select distinct Col1 from #tmp1;
select distinct Col1, Col2 from #tmp1;
若是想返回姑且表中Col1列不反復的記實行數,該若何書寫sql語句呢?利用下面的sql,從運行成果來看,并沒有達到預期的結果
select distinct count(Col1) from #tmp1;
試著把distinct和count互換一個位置,sql語句執行會怎么樣呢?從運行成果可以看出,這樣寫就可以達到預期的結果,Col1列的不反復行數準確的返回了
select count(distinct Col1) from #tmp1;
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!