通过忽略行号()插入

时间:2017-03-03 11:41:38

标签: sql-server

我有两张桌子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持有RowNumber字段,因此表B的值不在表A的值的末尾,它显示在第一行之后表A.但我需要表A末尾的值。请帮助

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

如果您按ID排序,那么您将在选择中获得预期结果,但是对于插入,您必须将RowNumber列设为IDENTITY,然后它将插入带有`RowNumber 3,4的下一条记录,5 ....等等

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

尝试以下列方式插入并提供TableA的最大值,以便在此之后生成数字:

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