sqlserver中distinct的用法(不重复的记录)

 更新时间:2010年09月04日 01:35:49   作者:  
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之前,不然会报错

 

相关文章

  • MSSQLSERVER不同版本设置开启远程连接(sa配置)

    MSSQLSERVER不同版本设置开启远程连接(sa配置)

    这篇文章主要为大家详细介绍了MSSQLSERVER不同版本设置开启远程连接,包括SQL SERVER 2008/2012/2012R2/2014开启远程连接的设置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • sql 版本详解 让你认识跟sql2000的区别

    sql 版本详解 让你认识跟sql2000的区别

    如果你是初学者,如果你只是想要在家里学习学习,如果你的环境是 WindowsXP Pro,那么,你应该选择的 是 SQL2005 Development(开发版),而不是 SQL2005 Enterprise (企业版)或 SQL2005 Express(简易版)。
    2010-05-05
  • SQL Server如何插入数据示例代码

    SQL Server如何插入数据示例代码

    插入数据相信大家应该都不陌生了,下面这篇文章主要给大家介绍了关于SQL Server如何插入数据的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • win2003 安装 sqlserver 2005的方法

    win2003 安装 sqlserver 2005的方法

    sql server 2005 安装在 2K3 server 系统上 需要 sp1补丁,安装sp1补丁时遇到问题无法安装解决办法,将如下代码保存为reg文件,导入注册表即可成功安装sp1补丁
    2010-05-05
  • SQL Server Agent 服务启动后又停止问题

    SQL Server Agent 服务启动后又停止问题

    这篇文章主要介绍了SQL Server Agent 服务启动后又停止问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • sql lite 数据库之间表复制的方法

    sql lite 数据库之间表复制的方法

    最近用sql lite数据库,因为数据库版本的问题,导致数据库中的数据表内容不同步,所以需要整合二个数据库中的对应表及其表中数据。
    2013-04-04
  • 数据库性能优化二:数据库表优化提升性能

    数据库性能优化二:数据库表优化提升性能

    数据库表优化包括:设计规范化表、消除数据冗余、适当的冗余、增加计算列、索引、主键和外键的必要性等等,需要了解的朋友可以参考下
    2013-01-01
  • SQL创建的几种存储过程

    SQL创建的几种存储过程

    表名和比较字段可以做参数的存储过程
    2010-05-05
  • Sql Server中一个表2个字段关联同一个表(代码解决)

    Sql Server中一个表2个字段关联同一个表(代码解决)

    Sql Server中一个表2个字段关联同一个表(代码解决),需要的朋友可以参考一下
    2013-02-02
  • SQL Server中搜索特定的对象

    SQL Server中搜索特定的对象

    这篇文章介绍了SQL Server搜索特定对象的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05

最新评论