2013-04-22 26 views
-1

我需要将结果从左连接查询添加到没有将其索引设置为标识的表,但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') 

我在哪里?是我需要有一些递增价值的地方,以便当插入到表1中时,ID将是唯一的。

我不允许改变表格的结构,我只是需要一些能够在飞行中计算他的东西。

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

回答

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') 
+0

啊谢谢你,row_number()正是我所期待的。我没有在W3S网站上看到这是我在这里发布的原因。 – HelloWorld 2013-04-22 14:41:40

相关问题