数据库为mysql表名:test_t 字段:r1,r2,r3数据如下:
  r1        r2            r3
  1         2             3      
  1         2             4
  1         3             4查询的结果要这样:
  r1        r2            r3
  1         2             4
  1         3             4比较r1,r2,如果值都一样,则保留第一条,其它的全部显示 各位大哥帮帮忙,小弟先谢了。

解决方案 »

  1.   

    假如r1,r2,如果值都一样,则保留r3最大值的那一条:select a.* from test_t a where not exists (
    select 1 from test_t b where b.r1=a.r1 and b.r2=a.r2 and b.r3>a.r3);
      

  2.   

    或:
    select a.* from test_t a,(select r1,r2,max(r3) as max_r3 from  test_t group by r1,r2) b where a.r1=b.r1 and a.r2=b.r2 and a.r3=b.max_r3;
      

  3.   

    假如r1、r2的值都一样,则随便保留一条,则要求你的表数据里面有一个可以在r1、r2相同的情况下进行唯一区分的列,如自增列等。
    上面的示例语句就是取r3最大值的那条(前提r1、r2相同时,r3不会出现重复值,否则不准)。
      

  4.   

    楼主的需求能用一条sql语句满足吗?就是delete from tb where 
    不用procedure