table test
(
1,a,b,f
2,a,b,c
3,a,b.j
)包含a的数据只能有一条,不管是哪一条都可以,这个sql要怎么写啊

解决方案 »

  1.   

    假设第1,2,3,4的列名分别为c1,ca,cb,cc
    可以这样写
    DELETE FROM test WHERE rowid IN(
      SELECT rowid FROM(
         SELECT rowid,row_number() over(partition by ca order by rowid) rn
           FROM test)
       WHERE rn > 1
    )
      

  2.   

    不知道楼主表具体怎样.
    但方法如下:
    SELECT *
      FROM test t
     WHERE t.ID IN (SELECT   ID
                        FROM test
                    GROUP BY ID
                      HAVING COUNT (*) > 1)
      

  3.   

    zcs_1(生生不息): 
    你的sql好强,能给解释解释吗? 我用你的sql做到了,可不知道原理,汗一个先
      

  4.   

    呵呵,原理就是按你要唯一的字段分组,然后计算每个分组的跳数,count 〉 1的就是有重复的。楼主懂了没?