Sql server 如何将行数与插入一起使用?
我在MSSQL服务器中有多个Sql server 如何将行数与插入一起使用?,sql-server,tsql,solr,row-number,Sql Server,Tsql,Solr,Row Number,我在MSSQL服务器中有多个uniond语句,很难在结果中找到唯一的列 我需要每行有一个唯一的值,所以我使用了row\u NUMBER()函数 此结果集正在复制到其他位置(实际上是SOLR索引) 下次我将运行相同的查询,我只需要选择新添加的行。 因此,我需要确认,新添加的行将在上次的row\u number值之后进行编号 换句话说,行号函数是否按照插入顺序对结果排序-假设我没有添加任何order BY子句? 如果没有,(如我所想),还有其他选择吗 谢谢。我想你可以这样做 ;WITH cte
union
d语句,很难在结果中找到唯一的列
我需要每行有一个唯一的值,所以我使用了row\u NUMBER()
函数
此结果集正在复制到其他位置(实际上是SOLR索引)
下次我将运行相同的查询
,我只需要选择新添加的行。
因此,我需要确认,新添加的行将在上次的row\u number
值之后进行编号
换句话说,行号
函数是否按照插入顺序对结果排序-假设我没有添加任何order BY
子句?
如果没有,(如我所想),还有其他选择吗
谢谢。我想你可以这样做
;WITH
cte
AS
(
SELECT * , rn = ROW_NUMBER() OVER (ORDER BY SomeColumn)
FROM
(
/* Your Union Queries here*/
)q
)
INSERT INTO Destination_Table
SELECT * FROM
CTE LEFT JOIN Destination_Table
ON CTE.Refrencing_Column = Destination_Table.Refrencing_Column
WHERE Destination_Table.Refrencing_Column IS NULL
<> P.>没有看到SQL,我只能给出一般的答案,即MSSQL不保证没有顺序子句的SELECT语句的顺序,这意味着ROWL号可能不是插入顺序。 < P>我建议您在插入时考虑行的“时间戳”。或向表中添加标识列 但是,听起来您想要做的是获取当前的max id,然后将行号添加到其中
Select col1, col2, mid + row_number() over(order by smt) id
From (
Select col1, col2, (select max(id) from tbl) mid
From query
) t