2013-07-22 36 views
0

假设我有两个表A和B连接两个表没有外键在INSERT语句

表A

name | age 
---------------- 
jack | 13 
hanna | 28 

表B

id 
----- 
1 
2 

我想在另一个表中插入C以下

表C

id | name | age 
-------------------- 
1 | jack | 13 
2 | hanna | 28 

我做得到我想要的东西的这个

INSERT INTO C (id, name, age) 
SELECT b.id, a.name, a.age 
FROM A a, B b 

这一翻译,我得到这个:

id | name | age 
-------------------- 
1 | jack | 13 
1 | hanna | 28 
2 | jack | 13 
2 | hanna | 28 

你怎么能解决这个问题?

+0

什么是两个表之间的关系插入所需的行? – hims056

+0

表格之间没有关系,这就是为什么我要求你的帮助 –

+0

你会接受什么样的有意义的输出? – bummi

回答

2
declare @a table (name varchar(50),age int) 
Declare @b table (id int) 

insert into @a 
select 'jack',13 
union select 'hanna',28 

insert into @b 
select 1 
union select 2 

Select id,name,age from 
(
Select a.* ,ROW_Number() over (order by name) as rn 
from @a a 
)x 
JOIN 
(
Select b.* ,ROW_Number() over (order by ID) as rn 
from @b b 
)y 
ON x.rn=y.rn 
order by ID 
+1

非常感谢,你是我的救星:) –

0

你可以这样写查询来获取表C

insert into #c 
select id, name, age from (
(select ROW_NUMBER() over (order by name) as Aid, name, age from #A) ATest 
inner join (select ROW_NUMBER() over (order by id) as Bid, id from #B) Btest on Aid = Bid 
)