我有一個20記錄的表。 我可以使用'Select distinct * from that_table'來獲取所有不重複的記錄。 也許大約有2001100條記錄。visual foxpro 9.0,如何查找/獲取重複記錄
如果我想檢查記錄在'distinct'後消失,如何將這133條記錄存入另一個表中。
另一個問題是 當從一個表追加新記錄到另一個表時,如何檢查附加記錄是否已經在目標表中?
感謝回答我的問題:)
我有一個20記錄的表。 我可以使用'Select distinct * from that_table'來獲取所有不重複的記錄。 也許大約有2001100條記錄。visual foxpro 9.0,如何查找/獲取重複記錄
如果我想檢查記錄在'distinct'後消失,如何將這133條記錄存入另一個表中。
另一個問題是 當從一個表追加新記錄到另一個表時,如何檢查附加記錄是否已經在目標表中?
感謝回答我的問題:)
這將是2+百萬行的黑客,緩慢但你可以這樣做:
Select Sys(2017,'',0,3) As crc, * ;
from myTable Into Cursor crsTemp ;
nofilter
Select * From crsTemp ;
where crc In ;
(Select crc From crsTemp;
having Count(*) > 1 ;
group By crc) ;
into Cursor crsDupes ;
nofilter
Select crsDupes
Browse
你應該使用從一開始的主鍵。
對於第二個問題,我認爲最好使用「insert into」而不是追加。即:
Insert into tableA ;
select * from tableB t1 ;
where not exists (;
select * from tableA t2 ;
where t1.field1 = t2.field1 and t1.field2 = t2.field2)
這裏是另一種方式來查找重複記錄: 假設你不保持刪除記錄遊逛......
select tableA
set deleted off
delete all
index on <key expression> to keyfield unique
set deleted on
recall all
browse for deleted
此過程將刪除所有記錄,並召回聲明將僅適用於已編入索引的記錄,並將標記爲已刪除的副本保留。
試試這個來檢查是否有重複記錄。
SELECT colName, count(*) FROM tblName GROUP BY colName HAVING count(*) > 1
謝謝回答,相當useful.Solution 1是好的,但包含了如此的記錄數超過133.I想修改的code.I「第一次出現」記載想要得到的結果看起來像是在兩個表(原點和不同點)之間做出區別。 :) –
當然,它會超過133.正如我已經說過,你應該從一開始就有主鍵。在重複的情況下,哪一個重複是重要的?畢竟,副本是重複的,它沒有訂單。 –