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

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只 用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的,所以浪费了我大量时间。

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

表A:

示例1

复制代码 代码如下:

select distinct name from A

执行后结果如下:

 

示例2

复制代码 代码如下:

select distinct name, id from A

执行后结果如下:

实际上是根据“name+id”来去重,distinct同时作用在了name和id上,这种方式Access和SQL Server同时支持。

示例3:统计

复制代码 代码如下:

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

示例4

复制代码 代码如下:

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

其他

distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。例如,假如表A有“备注”列,如果想获取distinc name,以及对应的“备注”字段,想直接通过distinct是不可能实现的。

但可以通过其他方法实现关于SQL Server将一列的多行内容拼接成一行的问题讨论

时间: 2024-10-24 23:28:13

SQL中distinct的用法(四种示例分析)_MsSql的相关文章

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

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只 用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值.其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的,所以浪费了我大量时间. 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希

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

下面先来看看例子: table表 字段1     字段2   id        name   1           a   2           b   3           c   4           c   5           b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. 比如我想用一条语句查询得到name不重复的所有数据,那就必须 使用distinct去掉多余的重复记录. select distinct name from table得到的结果是:  --

mysql中模糊查询的四种用法介绍_Mysql

下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为"张三","张猫三"."三脚猫","唐三藏"等等有"三"的记录全找出来. 另外,如果需要找出u_name中既有"三"又有

mysql中模糊查询的四种用法介绍

下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为"张三","张猫三"."三脚猫","唐三藏"等等有"三"的记录全找出来. 另外,如果需要找出u_name中既有"三"又有

SQL中Exists的用法

比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢? EX

SQL中实现SPLIT函数几种方法总结(必看篇)_Mysql

例1 代码如下 create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10)) returns @temp table(a varchar(100)) --实现split功能 的函数 --date :2003-10-14 as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@Sou

Thinkphp 中 distinct 的用法解析_php实例

TP中distinct()的用处主要是去除重复的值 在Thinkphp手册中也详细说明了(链接:http://document.thinkphp.cn/manual_3_2.html) 下面是我的个人例子: 显示的是这样的 在加入distinct的话: 显示结果为 下面为贴出来的代码 $offernum = M('offer')->distinct(true)->where('order_id='.$order_id)->field('user_id,number')->selec

Thinkphp 中 distinct 的用法解析

TP中distinct()的用处主要是去除重复的值 在Thinkphp手册中也详细说明了(链接:http://document.thinkphp.cn/manual_3_2.html#distinct) 下面是我的个人例子: 显示的是这样的 在加入distinct的话: 显示结果为 下面为贴出来的代码 $offernum = M('offer')->distinct(true)->where('order_id='.$order_id)->field('user_id,number')-

笔记本电池充不了电的四种原因分析和解决办法

  笔记本电池充不了电的四种原因分析和解决办法.不少网友会问,笔记本电池充不进电的原因是什么?笔记本电池不充电怎么办?笔记本电池不充电的4种原因分别是电源适配器故障,电池故障,主板故障,电路故障.那么我们该如何解决笔记本电池不充电这个问题呢? 一:电源适配器故障 电源适配器有很多朋友称之为充电器,虽然不够准确,但也确实很形象.判断是不是由于电源引起的不充电也很简单,替换法就可以.这种故障在DELL笔记本维修中多见,DELL笔记本采用LBK(DELL架構),充电电路设计比较特别,适配器如果出现问题