原文:http://www.cnblogs.com/rainman/archive/2013/05/03/3058451.html

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。

表A:

表B:

表newTest:

--------------------------------------------------------

1.作用于单列

SQL语句:
select distinct name from A

执行后结果如下:

SQL语句:
select distinct sex from newTest

执行后结果如下:

SQL语句:
select distinct age from newTest

执行后结果如下:

--------------------------------------------------------

2.作用于多列

SQL语句:
select distinct name, id from A

执行后结果如下:

实际上是根据name和id两个字段来去重的,这种方式Access和SQL Server同时支持。

SQL语句:
select distinct xing, ming from B

执行后结果如下:

返回的结果为两行,这说明distinct并非是对xing和ming两列“字符串拼接”后再去重的,而是分别作用于了xing和ming列。

更多例子:

SQL语句:
select distinct sex,age from newTest

执行后结果如下:

--------------------------------------------------------

3.COUNT统计

select count(distinct name) from A;      --表中name去重后的数目, SQL Server支持,而Access不支持

count是不能统计多个字段的,下面的SQL在SQL Server和Access中都无法运行。

select count(distinct name, id) from A;

若想使用,请使用嵌套查询,如下:

select count(*) from (select distinct xing, name from B) AS M;

--------------------------------------------------------

其他注意事项:

distinct必须放在开头

select id, distinct name from A;   --会提示错误,因为distinct必须放在开头

显示

distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。例如,假如表A有“备注”列,如果想获取distinc name,以及对应的“备注”字段,想直接通过distinct是不可能实现的。但可以通过其他方法实现关于SQL Server将一列的多行内容拼接成一行的问题讨论

SQL中distinct的用法(转)的更多相关文章

  1. SQL中distinct的用法

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  2. SQL中distinct的用法(转自博主:Rain Man)

    在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 示例1 select distinct nam ...

  3. SQL中distinct的用法(转载)

    1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 ...

  4. SQL中distinct的用法(四种示例分析)

    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只 用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...

  5. SQL中distinct的用法和left join查询的含义

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  6. 十、SQL中EXISTS的用法 十三、sql server not exists

    十.SQL中EXISTS的用法 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False EXISTS 指定一个子查询,检测 行 的存在. 语法 ...

  7. sql中binary_checksum(*)的用法

    sql中binary_checksum(*)的用法(转) binary_checksum(*)可以用来检查修改过的行. 同一行在update后,该行的binary_checksum(*)就不同. 如 ...

  8. SQL中Merge的用法

    SQL中Merge的用法 Merge的用法 Merge可以完成以下功能: 1.  两个表之间数据的更新 2.  进行进销存更新库存 3.  进行表之间数据的复制 语法说明: 1.  在语句结束后一定要 ...

  9. SQL中Truncate的用法(转)

    转自:http://www.studyofnet.com/news/555.html 本文导读:删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所 ...

随机推荐

  1. 关于strcpy的实现.

    #include <stdio.h> #include <stdlib.h> int strlen(const char *str) { ; while(*str++!='\0 ...

  2. The EF 6.x DbContextGenerator templates are not available for VS2010

    问题描述:采用VS2010.MVC3.EF6.1.1,并使用Model first的方式建立数据模型,创建了edmx文件.在edmx文件设计界面上,通过点选鼠标右键,Generate Database ...

  3. Android实现获取应用程序相关信息列表的方法

    本文所述为Androdi获取手机应用列表的方法,比如获取到Android应用的软件属性.大小和应用程序路径.应用名称等,获取所有已安装的Android应用列表,包括那些卸载了的,但没有清除数据的应用程 ...

  4. Linux下安装memcached

    Linux下安装memcached 1.运行memcached需要本文开头介绍的libevent库 $ sudo yum install libevent libevent-deve 2.下载安装me ...

  5. libmemcached安装及简单例子

    libmemcached安装及简单例子 1.下载安装libmemcached  $ wget http://launchpad.net/libmemcached/1.0/0.44/+download/ ...

  6. ExpandableListView(三)只展开一个group,没有child不展开group

    本文是自己在实践中,发现的问题. 有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个group,在点击下个group的同时,关闭之前的group 在一个ExpandableListView ...

  7. Jquery的一些简单使用记录

    //平滑滚动到底部 $(".list").scrollTo('100%', '100%', { easing: 'swing' }); //直接滚动至底部(无效果) $('.lis ...

  8. UVa340 Master-Mind Hints

    #include <stdio.h>#include <string.h> #define MIN(a,b) (((a) < (b)) ? (a) : (b)) int ...

  9. JAVA 对象内存分析

    1.jmap -heap pid 或者 jmap -histo pid 2.jmap -dump:file=folder/dumpFileName.txt,format=b pid 3.对3的输出文件 ...

  10. JBoss 系列二十一:JBossCache核心API

    内容简介 本处介绍JBossCache相关的主要API,我们目的通过本部分描述,读者可以使用JBossCache API,在自己的应用中使用JBossCache. Cache接口 Cache 接口是和 ...