SQL如何获取不重复的数据,去重后的数据行数

利用SQL在对数据做统计阐发的时辰 , 经常需要对数据进行过滤 , 筛选出不反复的记实 , 以及统计不反复的记实行数 , 那么 , 该若何实现呢?
方式/
1建立一个姑且表 , 用于演示sqlserver语法中的去重关头字distinct的利用 。 本文以sqlserver数据库为例演示
IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1; 
CREATE TABLE #tmp1(
    Col1 varchar(50),        
    Col2 int        
);

SQL如何获取不重复的数据,去重后的数据行数

文章插图

2【SQL如何获取不重复的数据,去重后的数据行数】往姑且表中插入几行测试数据 , 用于演示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);

SQL如何获取不重复的数据,去重后的数据行数

文章插图

3查询姑且表中所有的测试数据
select * from #tmp1;

SQL如何获取不重复的数据,去重后的数据行数

文章插图

4利用distinct查询出整个表所有字段值不反复的记实
select distinct * from #tmp1 

SQL如何获取不重复的数据,去重后的数据行数

文章插图

5distinct除了过滤整个表不反复的记实之外 , 还可以对指定列去反复 , 多个列利用逗号分隔即可
select distinct Col1 from #tmp1; 
select distinct Col1, Col2 from #tmp1; 

SQL如何获取不重复的数据,去重后的数据行数

文章插图

6若是想返回姑且表中Col1列不反复的记实行数 , 该若何书写sql语句呢?利用下面的sql , 从运行成果来看 , 并没有达到预期的结果
select distinct count(Col1) from #tmp1;

SQL如何获取不重复的数据,去重后的数据行数

文章插图

7试着把distinct和count互换一个位置 , sql语句执行会怎么样呢?从运行成果可以看出 , 这样写就可以达到预期的结果 , Col1列的不反复行数准确的返回了
select count(distinct Col1) from #tmp1;

SQL如何获取不重复的数据,去重后的数据行数

文章插图


以上内容就是SQL如何获取不重复的数据 , 去重后的数据行数的内容啦 , 希望对你有所帮助哦!

    推荐阅读