﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-业精于勤荒于嬉！-随笔分类-Oracle</title><link>http://www.blogjava.net/luofeng225/category/38589.html</link><description>生于忧患，死于安乐。</description><language>zh-cn</language><lastBuildDate>Sat, 06 Jun 2009 01:42:33 GMT</lastBuildDate><pubDate>Sat, 06 Jun 2009 01:42:33 GMT</pubDate><ttl>60</ttl><item><title>内连接，外连接，自然连接</title><link>http://www.blogjava.net/luofeng225/archive/2009/06/02/279717.html</link><dc:creator>luofeng225</dc:creator><author>luofeng225</author><pubDate>Tue, 02 Jun 2009 15:24:00 GMT</pubDate><guid>http://www.blogjava.net/luofeng225/archive/2009/06/02/279717.html</guid><wfw:comment>http://www.blogjava.net/luofeng225/comments/279717.html</wfw:comment><comments>http://www.blogjava.net/luofeng225/archive/2009/06/02/279717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luofeng225/comments/commentRss/279717.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luofeng225/services/trackbacks/279717.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  内连接<br><br>  外连接<br><br>  左外连接<br>  右外连接<br>  完全外连接<br> 自然连接<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/luofeng225/archive/2009/06/02/279717.html'>阅读全文</a><img src ="http://www.blogjava.net/luofeng225/aggbug/279717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luofeng225/" target="_blank">luofeng225</a> 2009-06-02 23:24 <a href="http://www.blogjava.net/luofeng225/archive/2009/06/02/279717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CRUD</title><link>http://www.blogjava.net/luofeng225/archive/2009/04/28/267975.html</link><dc:creator>luofeng225</dc:creator><author>luofeng225</author><pubDate>Tue, 28 Apr 2009 12:32:00 GMT</pubDate><guid>http://www.blogjava.net/luofeng225/archive/2009/04/28/267975.html</guid><wfw:comment>http://www.blogjava.net/luofeng225/comments/267975.html</wfw:comment><comments>http://www.blogjava.net/luofeng225/archive/2009/04/28/267975.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luofeng225/comments/commentRss/267975.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luofeng225/services/trackbacks/267975.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/luofeng225/archive/2009/04/28/267975.html'>阅读全文</a><img src ="http://www.blogjava.net/luofeng225/aggbug/267975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luofeng225/" target="_blank">luofeng225</a> 2009-04-28 20:32 <a href="http://www.blogjava.net/luofeng225/archive/2009/04/28/267975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>group by,order by ,having</title><link>http://www.blogjava.net/luofeng225/archive/2009/03/28/262602.html</link><dc:creator>luofeng225</dc:creator><author>luofeng225</author><pubDate>Sat, 28 Mar 2009 06:26:00 GMT</pubDate><guid>http://www.blogjava.net/luofeng225/archive/2009/03/28/262602.html</guid><wfw:comment>http://www.blogjava.net/luofeng225/comments/262602.html</wfw:comment><comments>http://www.blogjava.net/luofeng225/archive/2009/03/28/262602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luofeng225/comments/commentRss/262602.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luofeng225/services/trackbacks/262602.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 区别 group by，order by，having，where&nbsp;&nbsp;<a href='http://www.blogjava.net/luofeng225/archive/2009/03/28/262602.html'>阅读全文</a><img src ="http://www.blogjava.net/luofeng225/aggbug/262602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luofeng225/" target="_blank">luofeng225</a> 2009-03-28 14:26 <a href="http://www.blogjava.net/luofeng225/archive/2009/03/28/262602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL重复记录查询</title><link>http://www.blogjava.net/luofeng225/archive/2009/03/28/262583.html</link><dc:creator>luofeng225</dc:creator><author>luofeng225</author><pubDate>Sat, 28 Mar 2009 05:03:00 GMT</pubDate><guid>http://www.blogjava.net/luofeng225/archive/2009/03/28/262583.html</guid><wfw:comment>http://www.blogjava.net/luofeng225/comments/262583.html</wfw:comment><comments>http://www.blogjava.net/luofeng225/archive/2009/03/28/262583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luofeng225/comments/commentRss/262583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luofeng225/services/trackbacks/262583.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center"><strong><span style="font-size: 16pt">SQL</span></strong><strong><span style="font-size: 16pt">重复记录查询</span></strong></p>
<p><br />
1、查找表中多余的重复记录，重复记录是根据单个字段（peopleId）来判断<br />
select * from people<br />
where peopleId in (select&nbsp;&nbsp; peopleId from&nbsp;&nbsp; people group by&nbsp;&nbsp; peopleId having count (peopleId) &gt; 1)</p>
<p>2、删除表中多余的重复记录，重复记录是根据单个字段（peopleId）来判断，只留有rowid最小的记录<br />
delete from people <br />
where peopleId in (select&nbsp;&nbsp; peopleId from people group by&nbsp;&nbsp; peopleId&nbsp;&nbsp; having count (peopleId) &gt; 1)<br />
and rowid not in (select min(rowid) from&nbsp;&nbsp; people group by peopleId having count(peopleId )&gt;1)</p>
<p>3、查找表中多余的重复记录（多个字段） <br />
select * from vitae a<br />
where (a.peopleId,a.seq) in&nbsp;&nbsp; (select peopleId,seq from vitae group by peopleId,seq having</p>
<p>count(*) &gt; 1)</p>
<p>4、删除表中多余的重复记录（多个字段），只留有rowid最小的记录<br />
delete from vitae a<br />
where (a.peopleId,a.seq) in&nbsp;&nbsp; (select peopleId,seq from vitae group by peopleId,seq having count(*) &gt; 1)<br />
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)&gt;1)</p>
<p>5、查找表中多余的重复记录（多个字段），不包含rowid最小的记录<br />
select * from vitae a<br />
where (a.peopleId,a.seq) in&nbsp;&nbsp; (select peopleId,seq from vitae group by peopleId,seq having</p>
<p>count(*) &gt; 1)<br />
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)&gt;1)<br />
<br />
</p>
<p>(二)<br />
比方说<br />
在A表中存在一个字段&#8220;name&#8221;，<br />
而且不同记录之间的&#8220;name&#8221;值有可能会相同，<br />
现在就是需要查询出在该表中的各记录之间，&#8220;name&#8221;值存在重复的项；<br />
Select Name,Count(*) From A Group By Name Having Count(*) &gt; 1<br />
如果还查性别也相同大则如下:<br />
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) &gt; 1<br />
<br />
</p>
<p>(三)<br />
方法一<br />
<span style="background: silver">declare @max integer,@id integer<br />
declare cur_rows cursor local for select </span>主字段,count(*) from 表名 group by 主字段 having</p>
<p>count(*) &gt;； 1<br />
open cur_rows<br />
fetch cur_rows into @id,@max<br />
while @@fetch_status=0<br />
begin<br />
select @max = @max -1<br />
set rowcount @max<br />
delete from 表名 where 主字段 = @id<br />
fetch cur_rows into @id,@max<br />
end<br />
close cur_rows<br />
set rowcount 0</p>
<p>方法二</p>
<p style="text-indent: 24pt">有两个意义上的重复记录，一是完全重复的记录，也即所有字段均重复的记录，</p>
<p style="text-indent: 24pt">二是部分关键字段重复的记录，比如Name字段重复，而其他字段不一定重复或都重复可以忽略。</p>
<p>　　1、对于第一种重复，比较容易解决，使用<br />
select distinct * from tableName</p>
<p>　　就可以得到无重复记录的结果集。</p>
<p>　　如果该表需要删除重复的记录（重复记录保留1条），可以按以下方法删除<br />
select distinct * into #Tmp from tableName<br />
drop table tableName<br />
select * into tableName from #Tmp<br />
drop table #Tmp</p>
<p>　　发生这种重复的原因是表设计不周产生的，增加唯一索引列即可解决。</p>
<p>　　2、这类重复问题通常要求保留重复记录中的第一条记录，操作方法如下</p>
<p>　　假设有重复的字段为Name,Address，要求得到这两个字段唯一的结果集<br />
select identity(int,1,1) as autoID, * into #Tmp from tableName<br />
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID<br />
<span style="background: silver">select * from #Tmp where autoID in(select autoID from #tmp2)</span></p>
<p>　　最后一个select即得到了Name，Address不重复的结果集（但多了一个autoID字段，实际写时可以写</p>
<p>在select子句中省去此列）</p>
<p>(四)查询重复<br />
select * from tablename </p>
<p>where id in (select id from tablename group by id having count(id) &gt; 1)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; --from 网络</p>
<p><a href="http://hi.baidu.com/zeronet/blog/item/27c41046d2c0060a6b63e596.html">http://hi.baidu.com/zeronet/blog/item/27c41046d2c0060a6b63e596.html</a></p>
<img src ="http://www.blogjava.net/luofeng225/aggbug/262583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luofeng225/" target="_blank">luofeng225</a> 2009-03-28 13:03 <a href="http://www.blogjava.net/luofeng225/archive/2009/03/28/262583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>