Oracle去除重復(fù)記錄 不用distinct 支持hibernate |
發(fā)布時(shí)間: 2012/9/19 16:51:06 |
用distinct關(guān)鍵字只能過濾查詢字段中所有記錄相同的(記錄集相同),而如果要指定一個(gè)字段卻沒有效果,另外distinct關(guān)鍵字會排序,效率很低。 select distinct name from t1 能消除重復(fù)記錄,但只能取一個(gè)字段,現(xiàn)在要同時(shí)取id,name這2個(gè)字段的值。 所以用distinct達(dá)不到想要的效果,用group by 可以解決這個(gè)問題。 例如要顯示的字段為A、B、C三個(gè),而A字段的內(nèi)容不能重復(fù)可以用下面的語句: 為了顯示標(biāo)題頭好看點(diǎn)可以把select A, min(B),min(C),count(*) 換稱select A as A, min(B) as B,min(C) as C,count(*) as 重復(fù)次數(shù) 下面語句可以查詢出那些數(shù)據(jù)是重復(fù)的: 例如 select count(*) from (select gcmc,gkrq,count(*) from gczbxx_zhao t group by gcmc,gkrq having count(*)>=1 order by GKRQ)
select * from gczbxx_zhao where viewid in ( select max(viewid) from gczbxx_zhao group by gcmc ) order by gkrq desc
本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |