2017-03-03 5 views
0

私は2つのテーブル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

テーブルは、* unordered *集合を表します。 「表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

注文を使っていない場合、それを行う方法はありますか? – user2546461

0

あなたは、あなたが選択に予想される結果を取得しますが、挿入のためにあなたはそれがRowNumber関数 `と次のレコードを挿入しますIDENTITYとしてRowNumber列を作るために持っているIDでご注文いただいた場合3,4,5 ....そう

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

TRYに次のように挿入して、テーブルAの最大値を与えるために、そのように私それ以降に番号が生成されます。

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

次のクエリを試しました。 (ROWNUMBER BY ORDER)OVERテーブルA SELECT ROW_NUMBER(INTO INSERT)+2 N、 ID、 名、テーブルB FROM アドレス それは私に次のエラーを与えている:指定された値の\t列名または番号がありませんマッチテーブル定義。 – user2546461