刪除Access數據庫中重復的數據,只保留一條記錄



1.將過濾的結果導入到臨時表
select distinct * into 臨時表 from 原表名
2.刪除原表
delete table 原表名
3.將臨時表的數據轉移到原始表里
select distinct * into 原表名 from 臨時表
4.刪除臨時表
drop table Tmp

 

       /// <summary>
        /// 刪除重復數據,只保留一條數據 
        /// </summary>
        /// <param name="mdbPath">mdb路徑</param>
        public void DistinctTable(string mdbPath)
        {
            try
            {
                string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + mdbPath;
                DataTable dtTableName = OleDbHelper.GetExcelTables(connectionString);
                AccessHelper acchelp = new AccessHelper(connectionString);
                for (int i = 0; i < dtTableName.Rows.Count; i++)
                {
                    string name = dtTableName.Rows[i]["TABLE_NAME"].ToString();
                    //1.將過濾的重復數據 存放在臨時表里
                    acchelp.ExecuteSQL(@"select distinct * into tmpTable from " + name);
                    //2.刪除原表
                    acchelp.ExecuteSQL(@"drop table " + name);
                    //3.將臨時表的數據轉移到原始表里
                    acchelp.ExecuteSQL(string.Format(@"select * into {0} from tmpTable", name));
                    //4.刪除臨時表
                    acchelp.ExecuteSQL(@"drop table tmpTable");

                }
                dtTableName.Clear(); dtTableName = null;
            }
            catch (Exception ex)
            {
               MessageBox.Show(ex.Message);
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM