SQL> select * from t1;NAME       NICKNAME
---------- ----------
a          ab
b          ba
c          de
d          ab
e          ef
f          ef已选择6行。更新表:如果nickname相同,则将其name改成一样,即 更新 后结果如下SQL> select * from t1;NAME       NICKNAME
---------- ----------
a          ab
b          ba
c          de
a          ab
e          ef
e          ef已选择6行。

解决方案 »

  1.   

    NAME       NICKNAME
    ---------- ----------
    a          ab
    d          ab
    想问一下lz有没有什么修改规则啊??像NICKNAME 是ab的name有两个,修改成哪一个?规则是什么?
      

  2.   

    NAME       NICKNAME
    ---------- ----------
    a          ab
    d          ab
    想问一下lz有没有什么修改规则啊??像NICKNAME 是ab的name有两个,修改成哪一个?规则是什么?
      

  3.   

    update t1 t set name=(
      select min(name) from t1 where nickname=t.nickname)
    where exists(
      select 1 from t1 where nickname=t.nickname
      and name<t.name)
      

  4.   

    update t1  set t1.name=
    (select min(a.name) from t1  a where a.nickname=t1.nickname)
      

  5.   

    如果表数据量太大可能太费时间。
    create table t2 as
    select min(name) name,nickname from t1 group by nickname;create table t3 as 
    select b.name,
           a.nickname 
      from t1 a,
           t2 b
     where a.nickname=b.nickname;
      

  6.   

    update t1 set name = (select a.name from t1 a where a.nickname=t1.nickname and rownum=max(rownum))
      

  7.   

    呵呵 你就没有想过你狂狼哥哥在上面为什么要多加那个where子句??
      

  8.   

    哈哈,好久没来csdn了,今天来了,(谦虚的菜鸟) (狂浪) 还有刘立,你们都是我学习的榜样~~
      

  9.   

    如果不进行判断的话,更新时,会把所有的数据进行更新,数据量大了,就耗费时间,以前在csdn上看见过这样的问题,竟然又犯错,我需要反省~~~