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); } }