我有两个表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的末尾的值。请帮助
我有两个表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的末尾的值。请帮助
给出一个额外的列值只是为了排序。
查询
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];
没有使用Order by有没有办法做到这一点? – user2546461
如果按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
TRY以下列方式插入并给表A的最大值,这样我t之后将生成数字:
INSERT INTO TableA
SELECT (row_number() OVER (ORDER BY rownumber)+2) AS n,
id,
name,
address
FROM TableB
我无法将该列作为标识。我的目标是插入具有行号值的值但我不能使用order By子句。行号值可以更新或忽略吗? – user2546461
插入时尝试更新的一个,如果你觉得合适的话。 – Susang
我试过以下查询。 INSERT INTO表A SELECT ROW_NUMBER()OVER(ORDER BY ROWNUMBER)+2 N, ID, 名称,地址 从 表B 它给我以下错误:\t列名或提供值的数目不匹配表定义。 – user2546461
为什么要在行中保留RowNumber?你可以使用'ROW_NUMBER'函数 –
表代表*无序*集。没有“表A的结尾”这样的事情。 –
@GordonLinoff有人会说“表A的结尾”发生在表被删除时:-) –