不列入資料庫中 資料庫中不存在的記錄,統統刪除

2021-10-14 20:42:49 字數 1543 閱讀 4121

我們今天講的內容是上面兩講內容的延伸:在處理資料的時候,我們往往會遇到很多情況,其中最常見的是資料的核對,比如我們的資料庫中有很多的資料,是否準確呢?我們要定期核對.核對最基本的方法是匯出資料,和現場逐一核對,然後在excel**中做成標識,沒有的刪除,這個時候如何把資料表中的資料也同步處理呢?今日我們需要解決的就是這個問題。

例項:如下的工作表資料,和資料庫中相應的資料不是完全一致的,資料庫中的資料肯定是比資料表中的資料多,要把資料庫中多餘的資料一次性刪除.

該怎麼處理呢?為了在之後的執行過程中驗證資料,我們先把資料表中的資料匯出看一下:

我們發現在資料庫中多餘的資料是100020。下面我們著手解決。**:

sub mynzcreatedatatable_4() '第26講 工作表不存在,資料表中純在的多餘記錄記錄刪除

dim cnado, rsado as object

dim strpath, strtable, strwhere, strsql, strmsg as string

set cnado = createobject("adodb.connection")

set rsado = createobject("adodb.recordset")

strpath = thisworkbook.path & "mydata2.accdb"

strtable = "員工資訊"

cnado.open "provider=microsoft.ace.oledb.12.0;data source=" & strpath

strsql = "select * from " & strtable

rsado.open strsql, cnado, 1, 3

'匯報給使用者記錄數

msgbox "刪除前記錄數為:" & rsado.recordcount

rsado.close

strwhere = " where not exists(select * from [excel 12.0;database=" & thisworkbook.fullname & "].[" & activesheet.name & "$" _

& range("a1").currentregion.address(0, 0) & "] where 員工編號=" & strtable & ".員工編號)"

strsql = "select 員工編號 from " & strtable & strwhere

rsado.open strsql, cnado, 1, 3

if rsado.recordcount > 0 then

strsql = "delete from " & strtable & strwhere

cnado.execute strsql

msgbox rsado.recordcount & "條記錄被刪除。

查詢資料庫中不存在的ID

假設你資料庫有個a表 idname 1aaa 2bbb 3ccc 4ddd 需求 給你幾個id,返回a表中不存在的id?給你1,2,8,9 返回8,9.1.一般會這麼處理 select id from a where a.id in 1,2,8,9 然後程式處理。2.現在用乙個sql處理 sql s...

如何查詢出資料庫中不存在的記錄

這兩天經常遇到一道題,即如何用一條語句在資料庫中查詢出不存在的記錄.注意,是一條語句哦.一般情況下,該題有個前提條件,必定有乙個欄位是按規律生成的,如小時記錄,一天24條記錄.或者是按照序號生成,如12345678等.我的思路是構造乙個偽表,然後用偽表進行關聯查詢.create table test...

資料庫左鏈結資料不存在,右表依舊顯示資料

最近專案遇到乙個問題,需要些乙個收藏置頂功能,試了n種查詢方式,db,orm,都沒查出來,使用db左鏈結查詢,如果按照使用者id來查詢使用者的收藏情況,那麼只會顯示使用者的收藏,那些沒收藏的就不會顯示,使用orm的一對多關係,那麼就不能按照收藏時間來進行倒序,同樣實現不了,機緣巧合下搜到一大神著作,...