2017-03-03 68 views
0

我有两个表A和B 这两个表具有行号字段插入通过忽略行号()

表A

 
RowNumber Id Name Address 
1   1  ABC  India 
2   2  XYZ  Australia 

表B

 
RowNumber Id Name Address 
1   3 ABC India 

我需要在表A的末尾插入表B的值。由于表A中包含RowNumb因此表B的值不是在表A的值的末尾显示,而是在表A的第一行之后显示。但是我需要表A的末尾的值。请帮助

+1

为什么要在行中保留RowNumber?你可以使用'ROW_NUMBER'函数 –

+2

表代表*无序*集。没有“表A的结尾”这样的事情。 –

+2

@GordonLinoff有人会说“表A的结尾”发生在表被删除时:-) –

回答

0

给出一个额外的列值只是为了排序。

查询

select t.[RowNUmber], t.[Id], [Name], [Address] from(
    select [RowNumber], [Id], [Name], [Address], 0 as [sortby] 
    from [TableA] 
    union all 
    select [RowNumber], [Id], [Name], [Address], 1 as [sortby] 
    from [TableB] 
)t 
order by t.[sortby], t.[RowNumber]; 
+0

没有使用Order by有没有办法做到这一点? – user2546461

0

如果按ID顺序,那么你会得到预期的结果的选择,但对于插入你必须做出RowNumberIDENTITY然后它会插入带`ROWNUMBER下一条记录3,4,5 ....等

SELECT RowNumber, Id, Name, Address from TableA 
UNION ALL 
SELECT RowNumber, Id, Name, Address from TableB 
ORDER BY ID 

TRY以下列方式插入并给表A的最大值,这样我t之后将生成数字:

INSERT INTO TableA 
SELECT (row_number() OVER (ORDER BY rownumber)+2) AS n, 
    id, 
    name, 
    address 
FROM TableB 
+0

我无法将该列作为标识。我的目标是插入具有行号值的值但我不能使用order By子句。行号值可以更新或忽略吗? – user2546461

+0

插入时尝试更新的一个,如果你觉得合适的话。 – Susang

+0

我试过以下查询。 INSERT INTO表A SELECT ROW_NUMBER()OVER(ORDER BY ROWNUMBER)+2 N, ID, 名称,地址 从 表B 它给我以下错误:\t列名或提供值的数目不匹配表定义。 – user2546461