⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12599.htm

📁 一本很基础的SQL讲解
💻 HTM
字号:
<link href="./dzs_cs.css" rel="stylesheet" type="text/css" /><table width="96%" border="0" align="center" cellpadding="0" cellspacing="0">      <tr>        <td>&nbsp;</td>      </tr>      <tr>        <td height="24" align="center" valign="bottom" class="d_font3">删除数据库中重复数据的几个方法</td>      </tr>      <tr>        <td height="3" bgcolor="#E3E3E3"></td>      </tr>      <tr>        <td>&nbsp;</td>      </tr>      <tr>        <td class="d_font4"><P><STRONG>方法一</STRONG></P>
<P>declare @max integer,@id integer<BR>declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having 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><STRONG>方法二</STRONG></P>
<P>有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。</P>
<P>1、对于第一种重复,比较容易解决,使用&nbsp; select distinct * from tableName&nbsp; 就可以得到无重复记录的结果集。<BR>如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除<BR>&nbsp;&nbsp;&nbsp; select distinct * into #Tmp from tableName<BR>&nbsp;&nbsp;&nbsp; drop table tableName<BR>&nbsp;&nbsp;&nbsp; select * into tableName from #Tmp<BR>&nbsp;&nbsp;&nbsp; drop table #Tmp</P>
<P>发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。</P>
<P>2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下:</P>
<P>假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集<BR>&nbsp;&nbsp;&nbsp; select identity(int,1,1) as autoID, * into #Tmp from tableName<BR>&nbsp;&nbsp;&nbsp; select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID<BR>&nbsp;&nbsp;&nbsp; select * from #Tmp where autoID in(select autoID from #tmp2)<BR>最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)</P></td>      </tr>      <tr>        <td class="d_font4">&nbsp;</td>      </tr>    </table>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -