2008-11-13 20:35由于设计需要,需要查询不重复的记录值,同类问题,想必大家都遇到过,于是乎马上GOOGLE一下,发现此类问题还挺多,解决方案也不少,仔细看看。
例如有如下表结构和值
table
fid name sex
1 a 男
2 b 男
3 c 女
4 d 女
5 a 男
6 b 男
方案一:distinct
select distinct name from table
得到结果:
name
a
b
c
d
实现效果,那如果要同时打开其它记录呢?再试试
select distinct name,id from table
测试没什么效果,查下得知,这样实际是要name和id字段都重复才被筛选。继续查找可得如下方法:
方案二:group by
select *, count(distinct name) from table group by name
Oracle下测试失败,据说MYSQL下通过,不管,继续思考....
翻翻书,试试
select min(fid),name,sex from table group by name
成功,现实如下结果:
fid name sex
1 a 男
2 b 男
3 c 女
4 d 女
继续思考,如果要打开所有记录,不指定字段用(*),貌似这方法就不行了!
select * from table where fid in(Select min(fid) FROM table group by name)
测试成功
fid name sex
1 a 男
2 b 男
3 c 女
4 d 女
方案三:
本来已经完了,突然想起前几天在网上查了查询数据中所有某字段不重复的记录
select * from table where name in(select name from table group by name having count(name)=2)
得到如下结果:
fid name sex
1 a 男
2 b 男
5 a 男
6 b 男
以此类推:
select * from table where name in(select name from table group by name having count(name)=1)
按道理说没问题,大家试试~~
再多的字段都全部现实。哎,原来如此简单!回顾网上方法distinct,Inner Join等等,麻烦,而且有很大局限性.
总结如下:
select distinct name from table打开不重复记录的单个字段
select * from table where fid in(Select min(fid) FROM table group by name)打开不重复记录的所有字段值
select * from table where name in(select name from table group by name having count(name)=1)打开不重复任意次数的所有记录
分享到:
相关推荐
在SQL(Structured Query Language)中,随机提取数据是一项常见的需求,尤其在数据分析、测试或样例展示时。这里我们将深入探讨如何在SQL中实现这一功能,以满足“SQL随机抽取N条记录”的需求。 首先,我们需要...
- 删除特定情况下的重复记录:如果我们要删除ID不重复,但其他字段重复的记录,可以使用反向选择的方式,保留每个字段组合的最大ID记录,删除其余的。这通过`NOT IN`子句和子查询实现,例如`DELETE TestTable WHERE...
3. **数据设计**:如果`title`和`author`的组合是唯一的,那么可以考虑将这两个字段合并成一个新的复合主键,这样查询不重复记录会更加高效。 除了上述问题,MySQL还提供了其他方法来处理不重复记录,如`GROUP BY`...
**注意:** 在实际应用中,去除重复数据通常涉及更复杂的逻辑,例如依据多个字段判断是否重复,或者需要保留特定重复记录等。在这些场景下,可以使用`GROUP BY`、`DISTINCT`关键字,或者创建唯一索引来避免插入重复...
#### 13、DISTINCT 选择表中指定字段内容不相同的记录 - **定义**: `DISTINCT` 关键字用于返回不同的值。 - **语法**: ```sql SELECT DISTINCT 字段名 FROM 表名; ``` - **示例**: ```sql SELECT DISTINCT ...
- **数据管理**:使用SQL可以在ArcGIS中实现数据的提取、转换和更新,提高数据处理效率。 - **地图制图**:SQL可以帮助用户动态地控制地图的显示效果,如基于属性的符号化或标签设置。 - **地理处理**:在地理处理...
描述中的重复部分强调了御剑作为SQL注入工具的核心属性。SQL注入是黑客通过构造恶意的SQL语句,利用应用程序对用户输入数据未经充分验证的缺陷,来执行非授权的操作,获取、修改、删除数据库中的敏感信息。御剑工具...
SqlDbx3.51免费版是一款专为SQL数据库管理设计的强大工具,它提供了一整套功能,使得数据库开发人员和管理员能够高效地进行数据提取、查询、编辑以及管理任务。SqlDbx不仅支持多种数据库系统,如MySQL、SQL Server、...
SQL(Structured Query Language)是用于管理和操作数据库的标准编程语言,对于任何想要与...虽然SQL的全部知识需要时间和经验去积累,但掌握基础部分并不难,而且这将极大地提升你在数据分析和数据库管理领域的技能。
SQL(Structured Query Language)是用于管理和处理关系数据库的标准编程语言,它是数据科学、数据库管理和开发领域不可或缺的基础工具。本教程及项目案例集旨在为初学者提供一个全面了解和掌握SQL的平台,帮助新手...
**分页查询**是指从结果集中提取特定范围内的记录。可以使用`ROW_NUMBER()`函数结合子查询实现。 - **语法**: ```sql -- 查询第11到20条记录 SELECT * FROM (SELECT TOP 20 * FROM [tstudentinfo] ORDER BY ...
4. **去重**:通过 `DISTINCT` 关键字可以去除查询结果中的重复记录。 - 示例: ```sql SELECT DISTINCT 专业, 班级 FROM xsqk; ``` 这条语句将返回不重复的专业和班级组合。 #### 三、WHERE 子句 `WHERE` ...
1. **存储过程**:预编译的SQL语句集合,可重复调用,提高效率,减少网络传输。 2. **触发器**:在特定事件(如INSERT、UPDATE、DELETE)发生时自动执行的SQL代码。 **八、事务处理** SQL支持ACID(原子性、一致性...
SQL的功能非常强大,它不仅能够执行查询,从数据库中检索数据,还能插入新记录,更新现有记录,以及删除不需要的记录。此外,SQL还允许用户创建新的数据库、表格、存储过程和视图,并可以设置这些对象的权限,控制对...
参考类型是记录的引用,用于在PL/SQL程序中操作数据库表中的行。 PL/SQL支持多种流程控制语句,包括条件语句(如IF和CASE)以及循环语句(如FOR、WHILE和LOOP)。这些控制语句用于实现程序的逻辑判断和重复执行等...
15. JSON支持:SQL Server 2016及以后版本开始支持JSON数据处理,提供了将数据转换为JSON格式和从JSON字符串中提取数据的函数。 16. XML支持:SQL Server也支持XML数据类型,可以存储和查询XML文档,提供了处理XML...
这些结构使我们能够根据条件执行不同的代码块,或者重复执行某段代码。 3. **SQL语句的嵌入**:PL/SQL的一个重要特性是能够直接在代码中嵌入SQL语句,进行数据的查询、插入、更新和删除。例如,`SELECT * INTO var ...
数据查询是SQL的核心功能,通过SELECT语句,我们可以从数据库中提取所需的信息。例如,SELECT * FROM 表名 可以获取表中的所有记录,而WHERE子句则用来筛选满足特定条件的数据,如 SELECT * FROM 表名 WHERE 条件。 ...