在Join Query中获取带有标识列的Row索引

时间:2013-04-22 14:30:43

标签: sql-server

我需要将Left Join查询的结果添加到没有将其索引设置为标识的表中,但int必须仍然是唯一的。我的插入查询如下所示:

INSERT INTO Table1 (S.SubjectID, S.Subject, S.SubjectDescription, S.Status)
SELECT (Select MAX(SubjectID) FROM Table1) + ???? , N.Code, N.Literal, N.Trans
FROM  Table2 N LEFT JOIN Table1 S ON N.Code = S.Subject   
WHERE (N.Code IS NULL OR S.Subject IS NULL OR N.Trans = 'D')

我在哪里????是我需要有一些递增值的地方,这样当插入table1时,ID将是唯一的。

我不允许更改表的结构,我只需要能够在运行中计算出来的东西。

一如既往的帮助,我们非常感谢提示和参考。

1 个答案:

答案 0 :(得分:1)

在大多数数据库中,您可以使用row_number()来实现此目的。以下是SQL Server语法的示例:

INSERT INTO Table1 (S.SubjectID, S.Subject, S.SubjectDescription, S.Status)
SELECT (Select MAX(SubjectID) FROM Table1) + row_number() over (order by (select NULL)) ,
       N.Code, N.Literal, N.Trans
FROM  Table2 N LEFT JOIN Table1 S ON N.Code = S.Subject   
WHERE (N.Code IS NULL OR S.Subject IS NULL OR N.Trans = 'D')