对SQL数据库中的表去重,查询出的的结果放在临时表里,如何把这个临时表替换原先数据库未处理过的表

对SQL数据库中的表去重,查询出的的结果放在临时表里,如何把这个临时表替换原先数据库未处理过的表
现在我的代码是这样:
private void button1_Click(object sender, EventArgs e)
{
string ConStr = "server=(local);user id=sa;pwd=123;database=DB";
SqlConnection cn = new SqlConnection(ConStr);

SqlDataAdapter dap = new SqlDataAdapter("select distinct Pinst_namechar,Pinst_addrchar,Pinst_phonechar from 事业表", cn);
DataSet ds = new DataSet();
dap.Fill(ds, "qc");
dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
现在的结果是显示出已经去重过的临时表,如何把它替换掉原先未处理的表(也就是事业表),变为新的事业表

去重的操作, 一般就在服务器那里,执行语句就好了, 别全部都取到客户端, 然后在插入回服务器,太花费时间了.

如果在服务器那里做,就是
select distinct * INTO 临时表 from 事业表;
truncate table 事业表;
INSERT INTO 事业表 SELECT * FROM 临时表;
DROP TABLE 临时表;追问

请问在windows窗体里应该如何写语句,因为要求做的是客户端,呵呵,我也只能在那里写了。还是多谢指教了!

追答

你尝试在 windows窗体里, 依次执行上面的4条语句。 应该也是可以的。
如果要安全一点的话,就是做在一个 事务处理里面。
要预先有一个结构一样的表

在 windows窗体里,依次执行下面4句 SQL 语句,就好。 如果发生错误了, 还可以回滚。
DELETE FROM 临时表;
INSERT INTO 临时表 select distinct * from 事业表;
DELETE FROM 事业表;
INSERT INTO 事业表 SELECT * FROM 临时表;

假如不想执行太多语句,只要一条SQL语句就完事的话。
下面是SQL里面,删除2条完全一样的数据的例子,你也可以参考参考。
http://hi.baidu.com/wangzhiqing999/blog/item/e90c4012ae8b5d0c962b4357.html

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答