最新文章:

首页 网站技术

Sql查询不重复记录

发布时间:2010年12月22日 评论数:10 阅读数:75023

    注:以下内容在Oracle 10g下测试

    由于设计需要,需要查询不重复的记录值,同类问题,想必大家都遇到过,于是乎马上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查询不重复记录
本文地址:http://blog.kukuw.com/post-88.html
版权声明:若无注明,本文皆为“用心感悟 点滴记录!”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
陌染
陌染2018-10-06 23:34回复
#7
收藏的文章突然找不到了是怎么回事蓝叶博客
丢丢
丢丢2018-10-12 21:32回复
@陌染:应该不会的哦
李欣儿
李欣儿2018-08-13 11:13回复
#6
为什么一题错了扣这么多分?蓝叶博客蓝叶博客蓝叶博客蓝叶博客李欣儿
细胞活能
细胞活能2012-05-20 14:51回复
#5
这个学过滴,不过忘了··
琦草
琦草2012-05-10 15:35回复
#4
以前学过,但是不太懂哦
烘箱
烘箱2011-10-14 09:12回复
#3
哈哈  这个不是很懂哈
性
2011-01-31 16:51回复
#2
不错,收藏了 呵呵 博主加油哦
丢丢
丢丢2011-01-31 17:53回复
@性:感谢支持!
左旋肉碱
左旋肉碱2011-01-09 22:43回复
#1
以前在大学的时候也学过
丢丢
丢丢2011-01-09 23:45回复
@左旋肉碱:嘿嘿,这个是那天用到了,就在网上找的,留着以后备用的!