表AA如下:
代码         名称
101        AAAAAAAAAAAAA
101        BBBBBBBBBBB
102        CCCC
102        CCCC
103        AWC
103        #$EDDDD现在要实现,代码相同的,只取一条,可以取任意一条,把其他的记录删除掉,SQL语句该怎么写?得到结果要是下面这样:
101    AAAAAAAAAAA
102    CCCC
103    AWC
或:
101    BBBBBBBB
102    CCCC
103    #$EDDDDD

解决方案 »

  1.   

    循环就好办了,
    sql="select * from tb order by daima"
    然后循环删除偶数项
    不过我估计不是你要的
      

  2.   

    这么说你还真得用循环就是复杂点,循环看看当前的代码列值是不是和上一个一样,一样就删掉,不一样就继续循环
    我前一段时间刚做了一个。就是recordset取出后循环
      

  3.   

    delete from tb
    where 名称 in (select min(名称) from tb group by 代码)
      

  4.   

    上面是二二重复,如果有多条重复,只想保留任意一条:
    delete from tb
    where 名称 not in (select max(名称) from tb group by 代码)
      

  5.   

    delete   from   tb 
    where   名称   in   (select   min(名称)   from   tb   group   by   代码) 
      

  6.   

       你是想查询出的结果只要求一条呢,还是想把多的一条删除呢?如果是查询直接加个"distint"就是了;如果你想删除:
    delete * from aa in(select distint ('代码','名称') from aa) 不知道有没有语法错误哦!^_^
      

  7.   

    create table csdn
    (
        code int,
        name varchar(50)
    )
    insert into csdn (code, name)values
    (101,'AAAAAAAAAAAAAAA')
    insert into csdn (code, name)values
    (101,'BBBBBBBBBB')
    insert into csdn (code, name)values
    (102,'CCCC')
    insert into csdn (code, name)values
    (102,'CCCC')
    insert into csdn (code, name)values
    (103,'AWC')
    insert into csdn (code, name)values
    (103,'#$EDDDD ')select distinct * from csdnselect distinct *
    from csdn
    where name in
    (
    select max(name)
    from csdn
    group by code
    )
     
      

  8.   

    最最简单的方法就是生成一个新的表:
    SELECT id, MAX(名称) AS 名称 into 新表
    FROM 测试
    GROUP BY id新表里面的记录已经进行了你要的操作,其中MAX也可用MIN。
    不知道这样的结果你满意不?
      

  9.   

    最最简单的方法就是生成一个新的表: 
    SELECT id,MAX(名称) AS 名称 into 新表 
    FROM 测试 
    GROUP BY id 
    新表里面的记录已经进行了你要的操作,其中MAX也可用MIN。这样的语句适合任何情况,不管是记录内容完全一样还是不一样,不管相同id的记录有多少条,新生成的表中都能够将这些信息滤掉。
    不知道这样的结果你满意不?
     
      

  10.   

    11楼的意思就是用一个临时表 把第表中的数据(重复的)各拿出一条(随便哪条都行)放到临时表中 然后根据临时表中的记录来删除原来表中有重复的记录 ,规则有很多,自己想就可以了。
    记得oracle里有一个rwid什么什么的,就是每条记录的标识,拿他做参考,MAX或者MIN。
      

  11.   

    可不可以这样。建一个临时表(code,name)
    插入数据(code唯一)

    select code,MAX(name) into 临时表名 FROM 表名 group by code删除原来表所有数据
    delete 表名 where 1=1把临时表所有数据插入原来表insert into 表名(select code,name) from 临时表名
      

  12.   

    insert   into   表名(select   code,name from   临时表名)括号位置错了
      

  13.   

    select * from tb,
    (select 代码,min(名称)As 名称 from tb group by 代码) t1
    where tb.代码=t1.代码 and tb.名称 = t1.名称
      

  14.   

    select max(num) from tb group by 代码, 名称  
      

  15.   

    select * from AA group by code;
    +------+---------+
    | code | name    |
    +------+---------+
    |  101 | aaaaaaa |
    |  102 | 555     |
    |  103 | lllllll |
    +------+---------+效果已达到!!呵呵