同桌上课用手指进去了好爽_欧美丰满熟妇xxⅹⅹ性大i_成人av天天日天天拍拍_猛男gay帅男gay男男同志_欧美va天堂在线观看_人妻无码av中文系列三里桃花_亚欧免费无码在线观看_久久久精品国产亚洲av水_日韩在线免费看污污污_2021无码专区人妻系列日韩

首頁(yè) 優(yōu)化推廣 SQL選擇不重復(fù)記錄

SQL選擇不重復(fù)記錄

來(lái)源: | 時(shí)間:2010/12/21 12:42:38 |

由于設(shè)計(jì)需要,需要查詢不重復(fù)的記錄值,同類(lèi)問(wèn)題,想必大家都遇到過(guò),于是乎馬上GOOGLE一下,發(fā)現(xiàn)此類(lèi)問(wèn)題還挺多,解決方案也不少,仔細(xì)看看。
例如有如下表結(jié)構(gòu)和值
table
fid   name  sex
       
       
       
       
       
       
方案一:distinct
select distinct name from table
得到結(jié)果:
name
a
b
c
d
實(shí)現(xiàn)效果,那如果要同時(shí)打開(kāi)其它記錄呢?再試試
select distinct name,id from table
測(cè)試沒(méi)什么效果,查下得知,這樣實(shí)際是要name和id字段都重復(fù)才被篩選。繼續(xù)查找可得如下方法:
方案二:group by
select *, count(distinct name) from table group by name

Oracle下測(cè)試失敗,據(jù)說(shuō)MYSQL下通過(guò),不管,繼續(xù)思考....
翻翻書(shū),試試
select min(fid),name,sex from table group by name
成功,現(xiàn)實(shí)如下結(jié)果:
fid   name  sex
       
       
       
       
繼續(xù)思考,如果要打開(kāi)所有記錄,不指定字段用(*),貌似這方法就不行了!
select  * from table where fid in(Select min(fid) FROM table group by name)
測(cè)試成功
fid   name  sex
       
       
       
       
方案三:
本來(lái)已經(jīng)完了,突然想起前幾天在網(wǎng)上查了查詢數(shù)據(jù)中所有某字段不重復(fù)的記錄
select    from   table   where   name in(select   name   from   table   group   by   name     having   count(name)=2)
得到如下結(jié)果:
fid   name  sex
       
       
       
       
以此類(lèi)推:
select    from   table   where   name in(select   name   from   table   group   by   name     having   count(name)=1)
按道理說(shuō)沒(méi)問(wèn)題,大家試試~~
再多的字段都全部現(xiàn)實(shí)。哎,原來(lái)如此簡(jiǎn)單!回顧網(wǎng)上方法distinct,Inner   Join等等,麻煩,而且有很大局限性.
總結(jié)如下:
select distinct name from table打開(kāi)不重復(fù)記錄的單個(gè)字段
select  * from table where fid in(Select min(fid) FROM table group by name)打開(kāi)不重復(fù)記錄的所有字段值
select    from   table   where   name in(select   name   from   table   group   by   name     having   count(name)=1)打開(kāi)不重復(fù)任意次數(shù)的所有記錄

服務(wù)熱線

153 8323 9821

功能和特性

價(jià)格和優(yōu)惠

網(wǎng)站和維護(hù)

推廣和優(yōu)化

微信服務(wù)號(hào)