使用sql创建一个包含两个字段的新表,字段1来自表a,字段1来自表B

使用sql创建一个包含两个字段的新表,字段1来自表a,字段1来自表B,sql,ms-access-2010,Sql,Ms Access 2010,我是SQL新手,我在这里遇到了一个非常简单的查询请求 我有两个表,除了实际内容外,它们都有完全相同的结构(即相同的列数,相同的行数)。例如,tableA有两列,分别称为col1和col2;表B有两列,也称为col1和col2。现在我想创建第三个新故事,第一列是tableA的col1,第二列是tableB的col1。第一列的名称最好来自表A,第二列的名称最好来自表C。请问我如何做到这一点?我尝试了以下所有方法,但总是得到相同的错误:“查询值和目标字段的数量不一样。” 变更1: insert int

我是SQL新手,我在这里遇到了一个非常简单的查询请求

我有两个表,除了实际内容外,它们都有完全相同的结构(即相同的列数,相同的行数)。例如,tableA有两列,分别称为col1和col2;表B有两列,也称为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

假设两个表中有可以联接的字段,因此:

插入新表(表1,表2) 选择a.col1,b.col1 从表1 a到表2 b 其中a.col1=b.col1


a/b是区分每个表中两列的别名。如果您没有要加入的字段,那么无论您尝试做什么,都可能需要重新考虑。

您可以尝试以下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
上面的查询将创建一个新表,名为TableC,其中列col1来自TableA,列col2来自TableB。您可以根据需要更改查询。
我希望您能理解上述问题。试一试。

两个表上没有相等的记录吗?这两个表之间有关系吗,比如表A的col1等于表B的col1?你怎么知道如何匹配表A和表B之间的行?hi Paul和Prakash,没有,这两个表之间没有关系。它们具有相同的行号和偶数列号。基本上,这两个表仅由行(第1行到第1行、第2行到第2行等)匹配,hi Prakash thx用于您的建议。我在access中尝试过,但意识到出现语法错误,所以我在internet上查找,他们说access无法识别“row_number()”函数。我猜access sql是非常基本的。但你的想法促使我,我可以简单地添加一个ID列(其中包含简单的行号),然后加入这两个表。@user3164815酷,继续吧。将其标记为答案,或根据其帮助进行投票。thx Evopop,我在access中尝试了此操作,但它抱怨“找不到输出表newtable”。当然,这个新表还不存在,因为我们希望用这个语句来创建它(多么愚蠢的访问!)!我该怎么做?