select distinct f1,f2,f3,f4,f5
from 表名
where f1=f2
没问题的,我已经试过了
from 表名
where f1=f2
没问题的,我已经试过了
解决方案 »
- 关于 DBGridEH 的问题
- delphi想深入
- 问一个关于IMAGE的小问题
- DBGridEh设置掩码问题,在线等待,解决就给高分!!!
- 请问Cannot Create File....什么原因造成的?
- 请教:如何在程序中打印一张网页内容?
- tstringlist控件和string数组有什么不同?
- 怎样在程序中实现对ADODataSet的Add all fields,别且对ADODataSet的Parameters负值?
- 简单问题,请各位到此一游,多多益善,来者不拒,当然大虾们更收欢迎,先谢谢各位了。
- 程序员大本营2000什么时候上市?
- 请多多指点
- 如何判断当前操作系统是98还是2000或者NT?
也遇到过这样的问题,最后只好用程序来解决。用的是sql server7.
是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是一致的,所以把两个语名组装到一起,语句返回空!余下怎么办!
group by f1,f2
太好了!
本来想得很难的!没想到这么简单解决了! 高!!!!
我在pb,与数据库开发也问了这个问题,你也去留个言吧!一共108分,都给你!
好吧,麻烦你去留个言!工作完成了给你加分!
最晚明天!
有点问题了!
select f1,f2,max(f3),max(f4),max(f5)
group by f1,f2
这样过后一条记录就不完整了!也就是说Select 后须是要是 * 才行
因为在pb中把max(f3),max(f4),max(f5)作为计算列,不能做更新,也就是不能用Update写入数据库中!你还有什么办法吗?
当然,如果没有也没事,分还是你的!!!,我最多一个一个取来组装sql来更新库!
你的sql至少给把数据选出来了。
第一种方法!
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就写入库中了!!!
很简单!