日期:2014-05-17  浏览次数:20553 次

C#两个表合并问题求助
C#中有两个数据表 TableA 和TableB如下

TableA如下
---------------------------
ID CID
111  
222 编号2
333 编号3
444  
---------------------------
TableB 
ID CID
111 编号1
444 编号4
---------------------------

请问如何根据相同的ID 将两张表合并成一张下列各式的表

----------
ID CID
111 编号1
222 编号2
333 编号3
444 编号4

 

------解决方案--------------------
如果是存在DataTable的话
参考http://topic.csdn.net/u/20120830/17/51cfbe08-cd98-41cb-a052-be75663e598e.html
------解决方案--------------------
这个很简单
DataRow dr;
foreach(DataRow row in TableA)
{
DataRow[] drs=TableB.select("ID="+row["ID"]);
if(drs.length<0)
{
dr=TableB.newrow();
dr["ID"]=row["ID"];
dr["CID"]=row["CID"];
TableB.Rows.Add(dr);
}
}
这样不就合并了吗
------解决方案--------------------
探讨
C#中有两个数据表 TableA 和TableB如下

TableA如下
---------------------------
ID CID
111
222 编号2
333 编号3
444
---------------------------
TableB
ID CID
111 编号1
444 编号4
---------------------------……

------解决方案--------------------
http://www.cnblogs.com/hanyihua99/archive/2009/06/24/1510014.html
------解决方案--------------------
我的方法有问题,不要用
------解决方案--------------------
给你个思路,建一个存储过程不需要参数,
1.先把A表里CID为空值的ID健从B里找到对应ID,取其值赋给A表:
update A set A.CID=(select max(CID) from B where B.ID=A.ID)
2.把B表里只要是ID在A表里有的记录,用以下语句过删除
delete * from B where ID not in (select ID from B)
3.经过以上2步的过滤,B表里的数据都是A表里没有的了这时候,把B表里的数据再插到A表当中去。
insert into A(ID,CID) select ID,CID from B

合起来就是
update A set A.CID=(select max(CID) from B where B.ID=A.ID) 
delete * from B where ID not in (select ID from B) 
insert into A(ID,CID) select ID,CID from B

4.建好后运行它(直接在sql查询器里运行这个存储过程或者后台写个运行这个存储过程的方法也可以
5.注意一下,如果你要是B表里的数据还有用的话,那你就用建一张临时取来取代以上的B表