2014-01-06 19 views
-1

SQL新手,我在这里遇到了一个非常简单的查询请求。使用sql创建一个新表,包含2个字段,来自表A的字段1和来自表B的字段1

我有2个表,它们的结构完全相同(IE的列号相同,行号相同),但实际内容除外。例如,tableA有2列col1 &col2; tableB有2列也称为col1 & col2。现在我想创建第三个新故事,第一列是tableA的col1,第二列是tableB的col1。优选第一列的名称来自表格A,第二列的名称来自表格C.我该如何做到这一点?我尝试了以下所有方法,但我总是得到相同的错误:“查询值和目标字段的数量不相同。”

变化1:

insert into newTable(fromTable1,fromTable2) 
select col1 from table1 
select col1 from table2 

变化2:

insert into newTable(fromTable1,fromTable2) 
select col1 from table1,col1 from table2 

变化3:

insert into newTable(fromTable1,fromTable2) 
select col1 from table1, table2 
+0

是两个表上的记录数是否相等?这两个表之间是否有任何关系,如tableA的col1等于tableB的col1? –

+0

您如何知道如何匹配TableA和TableB之间的行? –

+0

嗨保罗和普拉卡什,不,这两张桌子之间没有任何关系。他们有相同的行号,甚至列号。基本上这两个表只匹配行(row1到row1,row2到row2等) – user3164815

回答

0

大概你具有可连接的两个表中的字段,所以这个:

inse rt into newtable(romTable1,fromTable2) 从table1 a,table2 b 中选择a.col1,b.col1 其中a.col1 = b.col1;

a/b是区分每个表中两列的别名。如果你没有加入的领域,那么无论你想做什么都可能需要重新思考。

+0

thx Evopop,我试过这个访问,但它抱怨说“无法找到输出表newtable”。但当然这个新表还不存在,因为我们希望用这个语句来创建它(访问多么愚蠢!)!我如何解决这个问题? – user3164815

0

你可以试试下面的SQL查询来达到你的目的:

with OrderedTableA as (
select row_number() over (order by Col1) RowNum, * 
from TableA (nolock) 
), 
OrderedTableB as (
    select row_number() over (order by Col1) RowNum, * 
    from TableB (nolock) 
) 

select T1.Col1, T2.Col2 into TableC 
from OrderedTableA T1 
    full outer join OrderedTableB T2 on T1.RowNum = T2.RowNum 

上面的语句将创建一个新表的表C与来自表B表A和COL2列COL1。您可以根据需要更改查询。 我希望你能理解上面的问题。试一试。

+1

您好普拉卡什thx建议。我尝试访问,但意识到有语法错误,所以我在互联网上查找,他们说访问不承认“row_number()”功能。我的猜测是访问sql是非常基本的。但是你的想法促使我可以简单地添加一个ID列(简单的行号),然后加入这两个表。 – user3164815

+0

@ user3164815很酷,继续。将它标记为答案或投票,因为它有帮助。 –

相关问题