利用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 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!