SQL2005 把A表数据插入到B表

A表 学号 姓名 年龄 1 张 18 ... ... ...
B表 学号 姓名 年龄 身高 体重 3 王 19 173CM 56kg ... .... ... ... ...
A表插入B 表效果; 学号 姓名 年龄 身高 体重
1 张 18
3 王 19 173CM 56kg
... ... ... .... ....
两个表数据很多。学号为不重复项,重复则不插入 只保留B表数据。如果两个表数据类型不同的话,还怎么处理。 求具体实施语句。

CREATE TABLE #表A(
学号 VARCHAR(10),
姓名 VARCHAR(20),
年龄 SMALLINT
)
CREATE TABLE #表B(
学号 VARCHAR(10),
姓名 VARCHAR(20),
年龄 SMALLINT,
身高 VARCHAR(10),
体重 VARCHAR(10)
)
INSERT INTO #表A VALUES('1','张',18)
INSERT INTO #表B VALUES('3','王',19,'173CM','56kg')
INSERT INTO #表B(学号,姓名,年龄) SELECT 学号,姓名,年龄 FROM #表A WHERE 学号 NOT IN (SELECT 学号 FROM #表B)
SELECT * FROM #表B

效果

学号         å§“名                   å¹´é¾„     èº«é«˜         ä½“重

---------- -------------------- ------ ---------- ----------

3          王                    19     173CM      56kg

1          å¼                     18     NULL       NULL

追问

这只是插入一条数据?如果a表数据很多怎么办。
看错了。我试下看。
还有就是,如果两个表列数据类型不一样。对上面的语句有影响没?因为B表原有数据不能改变。

追答

下面的语句就是要的效果

INSERTINTO#表B(学号,姓名,年龄) SELECT学号,姓名,年龄 FROM#表A WHERE学号 NOTIN(SELECT学号 FROM#表B)

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-17
select * from A表 where A表.学号<>B表.学号
然后一条条循环插入B表
相似回答