A表
+----+--------+----------+
| id | typeid | name     |
+----+--------+----------+
|  1 |     1  | AA       |
|  2 |     1  | BB       |
|  3 |     1  | AA       |
|  4 |     2  | A        |
|  5 |     2  | A        |
|  6 |     1  | BB       |
+----+--------+----------+id这个没有要求,只要去掉一个类别下重复的name即可,结果希望如下:
+----+--------+----------+
| id | typeid | name     |
+----+--------+----------+
|  1 |     1  | AA       |
|  2 |     1  | BB       |
|  4 |     2  | A        |
+----+--------+----------+

解决方案 »

  1.   

    本帖最后由 ACMAIN_CHM 于 2011-03-15 13:19:38 编辑
      

  2.   

    http://www.bsdlover.cn/html/00/n-1800.html
    给出了好几种解决方法,自己看下吧
      

  3.   

    不好意思,我表达有误需求:在每个类别下面,去掉重复的name,需要保存一个。
      

  4.   


    mysql> select * from t a where not exists(select 1 from t b where b.typeid=a.typ
    eid and b.name=a.name and id<a.id) //
    +------+--------+------+
    | id   | typeid | name |
    +------+--------+------+
    |    1 |      1 | aa   |
    |    2 |      1 | bb   |
    |    4 |      2 | a    |
    +------+--------+------+
    3 rows in set (0.00 sec)
      

  5.   

    想做删除,请问怎么做
    删除同类别下面name重复的记录,重复的需要保留一条
      

  6.   

    同 typeid 下面的name字段里有重复的删除,不过需要保留一个
      

  7.   


    mysql> delete b from t a ,t b where a.typeid=b.typeid and a.name=b.name and a.id
    <b.id //
    Query OK, 3 rows affected (0.02 sec)mysql> select * from t //
    +------+--------+------+
    | id   | typeid | name |
    +------+--------+------+
    |    1 |      1 | aa   |
    |    2 |      1 | bb   |
    |    4 |      2 | a    |
    +------+--------+------+
    3 rows in set (0.00 sec)不好意思,还不是很熟悉。