sql 不重复的数据记录
2009-06-17 11:14
260 查看
sql 不重复的数据记录 select *, count(distinct name) from table group by name 由于设计需要,需要查询不重复的记录值,同类问题,想必大家都遇到过,于是乎马上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 查出一张表中重复的所有记录数据
- sql 查出一张表中重复的所有记录数据
- sql语句查询一张表中某字段值重复的记录数据
- SQL删除重复记录,只保留一条数据。
- sql 查出一张表中重复的所有记录数据
- 删除oracle 表中重复数据sql语句、保留rowid最小的一条记录
- 记录一条清理重复数据的SQL代码
- SQL删除数据库中重复的数据记录
- 常用sql语句之删除或查询单个字段重复数据的记录
- sql 查出一张表中重复的所有记录数据
- 使用SQL语句对重复记录查询、统计重复次数、删除重复数据
- sql 查出一张表中重复的所有记录数据
- sql 查出一张表中重复的所有记录数据
- SQL删除、查找重复数据记录等操作
- sql 查出一张表中重复的所有记录数据
- 解决sql 过滤重复数据记录的方法(Oracle)
- SQL语句-统计全部数据,过滤掉其中两个字段同时重复的记录
- 关于sql数据表中查找重复记录的技巧
- sql 查出一张表中重复的所有记录数据
- sql 查出一张表中重复的所有记录数据