2017-03-03 80 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