我需要将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将是唯一的。
我不允许更改表的结构,我只需要能够在运行中计算出来的东西。
一如既往的帮助,我们非常感谢提示和参考。
答案 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')