数据库T-sql 问题,将A表的数据库字段导入到B中

A表有字段:A1_id,A2_name,A3_age B表有字段:B1_id,A1_id,B2_name,B3_name,我现在想把两张表的数据合到一起来,求解 --------》他们有主外键关系的
我想把A表的数据字段全部合到B表中间来!

第1个回答  2011-11-28
SELECT * FROM A,B WHERE A.A_ID=B.A_ID 通过A_ID将两表数据合到一起。 如果你想把A表某字段的值插入B表,用INSERT INTO B(某列)SELECT 某列 FROM A WHERE 条件 列的数目要一致 如果想把A的字段添加到B表 用ALTER TABLE B ADD 列名 数据类型 [NULL/NOT NULL] 当然列名数据类型什么的要和A表中的一致。
第2个回答  2011-11-22
楼上说的那个好像有点问题。本来想写个游标+存储过程了。不过想想好像没那么复杂。
下面这个你试下。
insert into B(b1_id,a1_id,b2_name)
select (select max(isnull(a1_id,0)+1)),a1_id,A2_name from a
where a1_id not in
(select a1_id from b)

条件语句限制了B表中没有A1_ID的数据,才会导进来。追问

两张表中都有很多数据库的,我的意思是怎么追加到B表中去啊

追答

这个SQL的结果,就是将A表中的数据导入到B表中。
条件是,B表中的没有a1_id的数据。B表的主键按最大值+1进行插入操作。
SQL要一次性全执行,别分开。呵呵。我换行是为了意思表达清楚些。追加的列,你要自己手工写,因为我不知道你的表结构。但是KEY,VALUE必须是数据类型一致。
如下图:

追问

很感谢 你能帮我做测试,我也明白你的意思,我的意思是:将A表的数据合并到B表中,也就是说在B表中建几个字段,在Update from B set a1_name = (select a1_id from A)我写的有问题,但是这是我要表达的意思,我这样就更新了一个字段,我在把set a1_name改成a1_age运行两次不就可以了吗?不知你明白没有

追答

哦,你的意思是将横表加列吧,不是横表加行的意思。呵呵。
那增加字段的SQL要你自己写啊。字段类型与A表的一样就行了。
比如:alter table b add a1_age int null
然后执行更新脚本就可以了。
update b set a1_age = a.a1_age
from a
where b.a1_id = a.a1_id
go

第3个回答  2011-11-22
楼上两位说的都没有问题,楼主,他们写的是一句话,不要拆开做2句话执行。
insert into B(b1_id,a1_id,b2_name) select (select max(isnull(a1_id,0)+1)),a1_id,A2_name from a where a1_id not in (select a1_id from b)
没细看语句,拷贝用一下,呵呵,反正是一句话,不能拆分。
第4个回答  2011-11-22
类型相同就行了吧。
insert into A(A1_id,A2_name,A3_age)
select B1_id,A1_id,B2_name,B3_name from B追问

两张表中都有很多数据库的,我的意思是怎么追加到B表中去啊

追答

你可以用left join (左联接)或者 right join (右联接)

本回答被提问者采纳