sql server distinct 过滤两个字段重复怎么写?
提问者: sqlservernew
<script type="text/javascript"></script>| 浏览次数:269次
1、SELECT distinct 字段名 ,ID FROM 表名
2、SELECT distinct 字段名 FROM 表名
第一种两个字段过滤重复的就不好使,第二种过滤一个重复的就好使
第一种怎么改一下才能是正确的呢?
2012-8-15 10:15
后面跟多个字段的话,就是要多个字段同时重复才能过滤
其实道理很简单,举个例子,如果数据是
id name
1 aaa
2 aaa
select distinct id,name from tab
这个语句的返回结果必然是两条,因为如果是1条的话,id 有两个值,就没法显示,随机取数这种事情如果没有指令,数据库自己是没有这个功能的。
解决方法:
比如name相同的记录,我要id最小的
select * from tab a where not exists (select 1 from tab where name = a.name and id < a.id)
搞定!
回答
一种查询方式
exists 是存在的意思,not exists是不存在
exists意思是判断后面()里的子查询是否存在记录,如果有多条,那不管有多少条,只要找到第一条,就返回真
not exists同理
分享到:
相关推荐
在实际工作中,我们经常会遇到需要对数据表中的记录进行去重的情况,尤其是当某个字段作为唯一标识符时,我们希望能够基于这个字段获取最新的、唯一的或者汇总的数据记录。下面将详细阐述这一知识点。 ### SQL 去重...
为了根据多个字段进行去重,你需要创建一个匿名类型来包含这两个字段,并使用这个匿名类型的等价关系进行去重。例如,如果我们有两个字段`field1`和`field2`,可以这样做: ```csharp var list = context.table1 ....
4. FULL OUTER JOIN:返回两个表中所有的记录,无论是否匹配,如果有不匹配的,对应的字段值为NULL。 5. 自连接:一个表自身与其他表的连接,常用于处理层次结构数据或查找相同类型但不同记录的数据。 三、其他...
这里定义了一个名为`stuinfo`的表,包含两个字段:`sid`作为主键类型为整型,`sname`为长度不超过20个字符的字符串类型。 #### 删除表 使用`DROP TABLE`语句可以删除一个已存在的表。 ```sql DROP TABLE stuinfo; `...
在第四题中,`DATEDIFF()`函数计算两个日期之间的差值,用于判断是否在特定的时间范围内。 7. **窗口函数**: 虽然在提供的查询中没有使用,但值得一提的是SQL Server支持窗口函数,如`RANK()`, `ROW_NUMBER()`和`...
在提供的例子中,我们看到一个简单的表格`table`,包含`id`和`name`两个字段,其中`name`字段存在重复值。当我们想要获取不重复的`name`时,可以使用`SELECT DISTINCT name FROM table`来实现。 然而,如果不仅需要...
这些连接操作是实现两个或多个表之间数据关联的基础,用于根据指定的条件,将不同的表中的列拼接起来,使得可以同时对多个表中的数据进行查询。 例如,在文档中出现了这样的查询语句: ```sql select A.*, B.C#, B....
SQL Server 查询语句大全 SQL Server 查询语句大全是数据库查询语言的基础,掌握这些语句是数据库管理和开发的基础。本文档将详细介绍 SQL Server 查询语句的基本结构、选择列表、FROM 子句、WHERE 子句、ORDER BY ...
- **AND运算符**:用于在WHERE子句中连接两个或多个条件,所有条件都必须满足。 - **OR运算符**:用于连接多个条件,只要满足其中一个条件即可。 - **BETWEEN AND运算符**:选择一个范围内的值,包括边界值。 - **...
### SQL Server 2005 数据库习题解析与答案 #### 1. 查询所有的读者信息。 **SQL语句:** ```sql USE BookLib; SELECT * FROM Reader; ``` **解析:** 此语句使用`SELECT * FROM Reader;`来获取`Reader`表中的...
- **笛卡尔积**:将两个或更多表的数据进行交叉连接,生成一个包含所有可能组合的虚拟表。 - **On筛选器**:基于`ON`子句中的条件过滤笛卡尔积的结果,只保留满足条件的行。 - **添加外部行**(针对OUTER JOIN)...
根据给定的SQL Server数据库语句,我们可以深入探讨与这些查询相关的知识点,这些知识点涵盖了SQL的基本操作、数据关联、聚合函数、子查询以及条件筛选等多个方面。以下是对这些语句涉及的重要知识点的详细解析: #...
在SQLSERVER中,查询是数据库操作的核心部分,用于从数据中检索信息。下面将详细解析提供的练习题中涉及的SQL语句及其知识点: 1. 查询所有年龄在20岁以下的学生姓名及年龄: 使用`SELECT`和`WHERE`子句,结合`...
4. **BETWEEN**:用于选择介于两个值之间的数据。 5. **ALIASES**:为列或表提供别名,简化查询表达。 6. **JOIN**:INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN用于合并多个表的数据。 7. **UNION**:合并多个...
7. **UNION操作符**:`UNION`用于合并两个或更多`SELECT`语句的结果集,去除重复行。它要求所有`SELECT`语句具有相同数量和类型的列。 8. **范围查询**:`BETWEEN`用于选取介于两个值之间的记录。例如,`WHERE sage...
SqlServer2008学习笔记中主要涉及到数据库的基本操作,包括创建、删除以及修改数据库的操作方法,同时也详细介绍了T-SQL语句中数据表的常用术语、系统数据库的相关知识以及T-SQL语句在数据表上的应用,如增加、删除...
在SQL Server中,字符串非空判断是一个常见的需求,特别是在处理用户输入或者数据处理时,确保字段不为空可以避免出现错误或异常。标题提到的是一种利用T-SQL(Transact-SQL)实现的方法,通过创建一个自定义函数来...
此外,SQL Server还支持更高级的功能,如JOIN操作用于合并多个表的数据,GROUP BY和HAVING用于数据分组和过滤,以及ORDER BY用于结果排序。这些知识虽然未在描述中详细提及,但对于全面理解和使用SQL Server来说是不...
### SQL Server 数据库管理之 SQL 语句教程 #### SQL 指令概览与应用场景 **SQL(Structured Query Language)** 是一种用于管理和处理关系型数据库的标准语言。本教程旨在帮助初学者乃至有一定基础的专业人士掌握...
从提供的文件信息来看,文档的标题是《SQLServer数据库技术》授课计划定义,而描述和标签部分没有提供额外信息。文件内容包含了关于SQL Server数据库技术的一系列知识点,可能是一份课程内容大纲或提纲,但是由于...