SQL:如何取出表中字段中相同的值
<p>SQL:如何取出表中字段中相同的值(SYBASE)可以的话发上代码</p>[此贴子已经被作者于2006-12-8 15:54:21编辑过]
不明白什么意思 不知所云 <p>比如说(SYBASE)有个test表,有name,xingbie这两个字段。在表中同时存在两条相同的记录,比如zhang,nan。那我没必要同时把这2个记录都放在里面(注:这2个字段并不是唯一键),怎么把相同的其中一条记录给删除掉?</p><p></p>
[此贴子已经被作者于2006-12-11 10:08:12编辑过]
<p>一般先建一个临时表,把唯一的数据SELECT进去,然后将原来的数据清空,再导回去。</p><p>好象没有很省事的办法,网上有许多类似的讨论的。</p> <p>用union</p><p>select</p><p>a.name,</p><p>a.xingbie</p><p>from test a</p><p>uion</p><p>select</p><p>a.name,</p><p>a.xingbie</p><p>from test a</p><p></p> 楼上,不错的方法 <p>删除重复数据<br/>方法一</p><p><br/> declare @max integer,@id integer<br/> declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 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> 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。</p><p> 1、对于第一种重复,比较容易解决,使用</p><p><br/> select distinct * from tableName<br/> </p><p><br/> 就可以得到无重复记录的结果集。</p><p> 如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除</p><p><br/> select distinct * into #Tmp from tableName<br/> drop table tableName<br/> select * into tableName from #Tmp<br/> drop table #Tmp<br/> </p><p> 发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。</p>
页:
[1]