数据库的一个头痛问题(50分)

  • 主题发起人 主题发起人 F4nn
  • 开始时间 开始时间
F

F4nn

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位大侠!在delphi6中用什么方法可以最快速度筛选数据库重复的记录呢?把不重复
的记录显示在DBGrid中!(要求用ADO控件)说明一点的是我的数据库很大,所以速度要快!
 
如果是oracle数据库,一个sql就搞定

-----
http://www.8421.org
 
用sql语句
select distinct fields from table
 
我的数据库是SQL Server,我用过ADOQuery1.SQL.Add('SELECT distinct CONTRACT from bill')
但不行!不能满足我的要求!我要的是筛选出重复的记录而不是筛选出某一列!可能我不太会
用distinct这个函数!
 
数据库中必须有主关键字才行
 
distinct 表示如果有重复记录,只取一条。
select distinct * from bill
 
磊说的不行,请试一下再发表
 
我用SYBASE可以的。huddle你在哪里试过不行了?
 
我在oracle上试的不行
 
to 磊:不好意思,我搞错了,行的。
 
我试过了磊?的方法行是行,而且速度也可以!很快!但还是不能满足我的要求!因为磊说
的方法要要两条记录每个字段的数据完全一样才筛选出来的!而我要的是CONTRACT这个字段
重复的就筛选出来的!
请高手帮我!谢谢!
 
select distinct(CONTRACT),别的字段 from table就行了
 
to f4nn:
我是第一个回答的,恰好就是解决方法,你到底看没看.
不过这种方法对大容量数据库效率比较低。
book523是对的。
 
select CONTRACT,count(*) from bill
group by CONTRACT
having count(*)>1;
如果你要的是筛选出两个字段重复的记录,假设另一个字段是 CONTRACT_2 则可以
select CONTRACT, CONTRACT_2 , count(*) from bill
group by CONTRACT , CONTRACT_2
having count(*)>1;
三个,四个字段的以此类推

 
后退
顶部