数据表tbl(col1, col2, col3)如何删除该表中col1, col2联合相同的多余记录?例如,(14, 38, 7) , (14,38, 12) , (14, 38, 10),(14,38, 12)这几个算是相同的记录,保留其中一条。ps:如果有可能的话,保留col13的值最大的,本例中保留一条(14,38, 12)即可

解决方案 »

  1.   

    delete from tbl a
    where exists (select 1 from tbl where col1=a.col1 and col2=a.col2 and col3>a.col3);
      

  2.   

    或者delete a from tbl a left jon (
    select col1, col2, max(col3) as m_col3 from tbl group by col1, col2) b on a.col1=b.col1 and a.col2=b.col2 and a.col3=b.m_col3
    where b.col1 is null
      

  3.   


    select a.col1,a.col2,a.col3
    from tt a inner join tt b on a.col1=b.col1 and a.col2=b.col2 and a.col3<=b.col3
    group by a.col1,a.col2,a.col3
    having count(b.col1)=1
      

  4.   

    这些都是典型的SQL问题了
    分组取最大值或最小值过滤即可