select * from tab_1
where rowid in
(
select min(rowid) from tab_1 group by f1,f2
)

解决方案 »

  1.   

    西门吹雪答案是:
    select f1,f2,max(f3),max(f4),max(f5)
    group by f1,f2 
      

  2.   


    select top(1)
    group by f1,f2 
      

  3.   

    newyj(老鬼)
    你是什么数据库,top(1)也行!我用的Oracle,你的语句不行
      

  4.   

    有点问题
    select f1,f2,max(f3),max(f4),max(f5)
    group by f1,f2 
    这样过后一条记录就不完整了!也就是说Select 后须是要是 * 才行
    因为在pb中把max(f3),max(f4),max(f5)作为计算列,不能做更新,也就是不能用Update写入数据库中!还有什么办法吗?
      

  5.   

    select DISTINCT a.f1,a.f2,(select top 1 f3 , f4,  f5 from 表名 where f1=a.f1 and f2=a.f2)
    from 表名 a 你试试
      

  6.   

    select DISTINCT a.f1,a.f2,(select top 1 f3 from 表名 where f1=a.f1 and f2=a.f2 order by f3,f4,f5) as f3,
    (select top 1 f4 from 表名 where f1=a.f1 and f2=a.f2 order by f3,f4,f5) as f4,
    (select top 1 f5 from 表名 where f1=a.f1 and f2=a.f2 order by f3,f4,f5) as f5,
    from 表名 a 对不起,一顺手就写错了
      

  7.   

    select * from a where rowid in (select max(rowid) from a group by f1,f2)
    a为表名
      

  8.   

    hughie(雨神)
    我执行这样一句也要出错
    select top 1 f1,f2 from table
    为什么!
      

  9.   

    flyfk961(fk)
    你的方法能行!
    rowid是什么东西!
      

  10.   

    select f1,f2,max(f3),max(f4),max(f5) from tablename group by f1,f2
      

  11.   

    to Awen(阿文) :
    不好意思,没看到你是在oracle中,我写的是在SQl Server 中的查询,不好意思,
    在oracle中用flyfk961(fk)的语句是对的。
      

  12.   

    rowid可以理解成一条记录在数据库中的地址,在8i中它是这样确定的
    对象号+相对文件号+块号+行号
    通过确定rowid,可以确定一行记录
      

  13.   

    差不多了!综合delphi,pb,数据库开发几个论坛的讨论!
    第一种方法!
    select f1,f2,max(f3),max(f4),max(f5)
    group by f1,f2 
    选出来之后取于变量中,组成一个sql,再insert到数据库!但不是很方便,我的实际数据库有几十个字段呢!
    方法二:(用一些数据库的特有的东西)
    oracle:
    select * from a where rowid in (select max(rowid) from a group by f1,f2)
    sqlserver:
    1.
    select DISTINCT a.f1,a.f2,(select top 1 f3 from 表名 where f1=a.f1 and f2=a.f2 order by f3,f4,f5) as f3,
    (select top 1 f4 from 表名 where f1=a.f1 and f2=a.f2 order by f3,f4,f5) as f4,
    (select top 1 f5 from 表名 where f1=a.f1 and f2=a.f2 order by f3,f4,f5) as f5,
    from 表名 a 
    2.
    select top(1)
    group by f1,f2 sqlserver我没试,如果它有top 1这种用法那一定有办法!
    所有我用了第二种!
    这样我的数据窗口在检索出数据后,修改行标志,再update就写入库中了!!!
    很简单!