table1:    field1    field2   field3  field4
               40       cc        dd     ee
               40       dd        s1     aw
               50       he        aw     asdfsd
               50       asf     sfsd     sf
               60       aaa     sdfg     afsd
 用sql语句查询结果为
               40      cc        dd    ee
               50       dd        s1   aw
               60       aaa     sdfg   afsd
  或者说我希望对field进行检索,有field1z字段的重复纪录(field 字段重复)就过滤掉,我做了好多时间也没有成功!希望各位给于赐教

解决方案 »

  1.   

    select field1,max(field2),max(field3),max(field4)
    from table1
    group by field1
      

  2.   

    上面的有点看不懂,可以解释一下为何field1 50 会调用 field1 40 (dd  Sl aw )的数据
      

  3.   

    去除脏纪录是吧这条是保留field1字段唯一后取field2的最小字段
     DELETE t1 
       FROM table1 t1 
            JOIN table1 t2   ON t1.field1=t2.field1  AND t1.field2>t2.field2建议先用
    select * fromg t1 
       FROM table1 t1 
            JOIN table1 t2   ON t1.field1=t2.field1  AND t1.field2>t2.field2
    防错
      

  4.   

    field2,field3,field4是字符型的用MAX函数能行么?
      

  5.   

    一楼的不行,嗯会查出
    40  dd   sl   ee这种结果来
      

  6.   

    field1z字段的重复纪录
    这里有重复记录吗?
    你是不是想field1 不重复啊?
    强烈不知其意!
      

  7.   

    DISTINCT只能比较整条纪录,不是针对具体字段的
      

  8.   

    select distinct(field1) from ...不是就行了
      

  9.   

    不好意思,结果错了,正确期待的结果是
                   40      cc        dd    ee
                   50      he        aw     asdfsd
                   60       aaa     sdfg   afsd
      

  10.   

    你要删除什么样的记录呢?总得有些条件吧?
    如果随便的话,用这个绝对可以:
    select field1,max(field2),max(field3),max(field4)
    from table1
    group by field1
      

  11.   

    select field1,field2,field3,field4
    from table1
    group by field1,field2,field3,field4
      

  12.   

    select field1,field2,field3,field4
    from table1
    group by field1,field2,field3,field4