`

sql 提取不重复记录

阅读更多
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总结.doc

    游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。尽管游标能遍历结果中的所有行,但他一次只指向一行。 (2)游标的作用 游标的一个常见用途就是保存查询结果,以便...

    SQLite Distinct 关键字

    当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。 语法 用于消除重复记录的 DISTINCT 关键字的基本语法如下: SELECT DISTINCT column1, column2,.....columnN ...

    ssm框架酒吧系统完整导入可运行带sql

    1、会员基本信息:主要是注册一些会员信息,然后用到了easyUI的表格,新增会员时,主要是给会员卡号做出了一些判断,判断了会员卡号不能为空,不能重复,对于日期,是获取当前系统时间。 2、会员卡充值:首先对会员信息...

    Delphi开发范例宝典目录

    实例269 从SQL Server数据库中提取多媒体文件 347 实例270 向SQL Server中存储Word文档 348 实例271 从SQL Server中提取Word文档 349 8.4 SQL Server服务器应用 350 实例272 和服务器时间同步 350 实例273...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例251 查询时不显示重复记录 9.6 排序、分组统计 实例252 对数据进行降序查询 实例253 对数据进行多条件排序 实例254 按仓库分组统计图书库存(多列) 实例255 多表分组统计 9.7 HAVING语句应用 实例256 ...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例251 查询时不显示重复记录 9.6 排序、分组统计 实例252 对数据进行降序查询 实例253 对数据进行多条件排序 实例254 按仓库分组统计图书库存(多列) 实例255 多表分组统计 9.7 HAVING语句应用 实例256 ...

    C#程序开发范例宝典(第2版).part13

    一部久享盛誉的程序开发宝典。...实例264 不出现在任务栏上的程序 360 实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...

    C#程序开发范例宝典(第2版).part08

    一部久享盛誉的程序开发宝典。...实例264 不出现在任务栏上的程序 360 实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...

    C#程序开发范例宝典(第2版).part02

    一部久享盛誉的程序开发宝典。...实例264 不出现在任务栏上的程序 360 实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...

    C#程序开发范例宝典(第2版).part12

    一部久享盛誉的程序开发宝典。...实例264 不出现在任务栏上的程序 360 实例265 怎样调用外部的EXE文件 361 实例266 关闭外部已开启的程序 362 7.10 程序运行 363 实例267 防止程序多次运行 363 实例...

Global site tag (gtag.js) - Google Analytics