select distinct f1,f2,f3,f4,f5
from 表名
where f1=f2
没问题的,我已经试过了

解决方案 »

  1.   

    group by (+having) 试试。
      

  2.   

    我也想知道答案。
    也遇到过这样的问题,最后只好用程序来解决。用的是sql server7.
      

  3.   

    wwwhym(wwwhym)你没明白意思!并不是f1=f2
    是f1相同与f2相同的中要一条记录!如题中的1,2,还有3,4如果用
    Select f1,f2 group by f1,f2 having count(*)>1选
    但只选择到f1,f2
    因为group by f1,f2 后就只能选到f1,f2,而我要 select *如果用distinct也是上面的情况,distinct只有在完全重复的情况下只选一条
    而我要求只要f1,f2是相同的就选一条。在这里是一定要用到子查询的
    我试过
    select f1,f2,f3,f4,f5 from table
    where rownum in
    (Select max(rownum) from table group by f1,f2 )
    其中rownum是行号,不是字段!
    这个语名中的子查询
    Select max(rownum) from table group by f1,f2 
    能得到每一组的最大一个行号
    如例数据,则返回:2,4,5
    这正是想要的行号但是这里rownum有问题,一个sql中的rownum是一致的,所以把两个语名组装到一起,语句返回空!余下怎么办!
      

  4.   

    gz,你到数据库开发去问问,哪里SQL高手多
      

  5.   

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

  6.   

    当然,f3,f4,f5必须是序数类型
      

  7.   

    wangxd1976(西门吹雪)
    太好了!
    本来想得很难的!没想到这么简单解决了! 高!!!!
    我在pb,与数据库开发也问了这个问题,你也去留个言吧!一共108分,都给你!
    好吧,麻烦你去留个言!工作完成了给你加分!
    最晚明天!
      

  8.   

    wangxd1976(西门吹雪)
    有点问题了!
    select f1,f2,max(f3),max(f4),max(f5)
    group by f1,f2 
    这样过后一条记录就不完整了!也就是说Select 后须是要是 * 才行
    因为在pb中把max(f3),max(f4),max(f5)作为计算列,不能做更新,也就是不能用Update写入数据库中!你还有什么办法吗?
    当然,如果没有也没事,分还是你的!!!,我最多一个一个取来组装sql来更新库!
    你的sql至少给把数据选出来了。
      

  9.   

    差不多了!综合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就写入库中了!!!
    很简单!