当前位置:  数据库>sqlserver

sql server中distinct筛选重复记录的用法举例

    来源: 互联网  发布时间:2014-08-29

    本文导语:  在sql server中,distinct关键字可以过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。 distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,...

在sql server中,distinct关键字可以过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。
distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。

来看如下的例子。
 

table表
字段1 字段2
id name
1 a
2 b
3 c
4 c
5 b
 

比如想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。
 

代码示例:

select distinct name from table
结果:
--------
name
a

c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:
 

代码示例:
select distinct name, id from table
结果会是:
----------
id name
1 a
2 b
3 c
4 c
5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。
修改查询语句:
 

代码示例:
select id, distinct name from table
 

除了错误信息什么也得不到,distinct必须放在开头。
难到不能把distinct放到where条件里?可以,但照样报错。
以下方法是可行的:
 

代码示例:

select *, count(distinct name) from table group by name

结果:
id name count(distinct name)
1 a 1
2 b 1
3 c 1
 

最后一项是多余的,管用即可。

注意:
group by 必须放在 order by 和 limit之前。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  • C#调用SQL语句时乘号的用法
  • sql中all,any,some用法
  • SQL事务用法begin tran,commit tran和rollback tran的用法
  • sql游标的用法简单笔记
  • sql查询语句group by用法简介
  • 浅析SQL语句中GROUP BY的用法
  • sql server中ISNULL函数与Mysql中IFNULL函数的用法
  • SQL中object_id函数的用法
  • SQL cursor用法实例
  • sql语句中isnull函数用法 实例教程
  • sql Set IDENTITY_INSERT的用法
  • if exists和if not exists关键字用法(sql server)
  • SQL SELECT DISTINCT 语句用法
  • sql数据库中ISNULL函数用法 sql语句判断值是否为空
  • [Oracle] 常用工具集之SQL*Loader的用法
  • 求SQL Server 2000 JDBC的用法!(高分)
  • sql server中Group By语句的用法
  • sql server 中 Select 检索高级用法
  • sql模糊查询与sql通配符的用法
  • sql通配符用法参考
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3