Tsql 插入到ID为列的表中
我试图从临时表中插入列,并希望ID列按顺序递增。我正在使用以下代码,但未插入任何内容:Tsql 插入到ID为列的表中,tsql,Tsql,我试图从临时表中插入列,并希望ID列按顺序递增。我正在使用以下代码,但未插入任何内容: INSERT INTO TestDataTable SELECT Code, Description, ParentID FROM TempTable 请告诉我如何让它工作。您需要将ID设置为一个。因此,在select into语句中,类似这样的操作应该: INSERT INTO TestDataTable SELECT ID = IDENTITY(INT,1,1), Code, Description
INSERT INTO TestDataTable
SELECT Code, Description, ParentID FROM TempTable
请告诉我如何让它工作。您需要将ID设置为一个。因此,在select into语句中,类似这样的操作应该:
INSERT INTO TestDataTable
SELECT ID = IDENTITY(INT,1,1), Code, Description, ParentID FROM TempTable
我想说你有两个选择。第一种方法是用目标表的数据定义语言处理这个问题。请参阅此为MS SQL Server编写的代码示例
CREATE TABLE #A (
Id INT NOT NULL IDENTITY(1,1) PRIMARY KEY
, Code VARCHAR(10) NOT NULL)
CREATE TABLE #B (
Code VARCHAR(10) NOT NULL)
INSERT INTO #B VALUES ('alpha')
INSERT INTO #B VALUES ('beta')
INSERT INTO #B VALUES ('gamma')
INSERT INTO #B VALUES ('delta')
INSERT INTO #A (Code)
SELECT Code
FROM #B
SELECT *
FROM #A
DROP TABLE #A
DROP TABLE #B
如果不允许您在目标表的DDL中进行处理,那么您可以在进入表的过程中完成需要指定的内容,就像这样,如果您知道它将是空的
CREATE TABLE #A (
Id INT NOT NULL PRIMARY KEY
, Code VARCHAR(10) NOT NULL)
CREATE TABLE #B (
Code VARCHAR(10) NOT NULL)
INSERT INTO #B VALUES ('alpha')
INSERT INTO #B VALUES ('beta')
INSERT INTO #B VALUES ('gamma')
INSERT INTO #B VALUES ('delta')
INSERT INTO #A (Id, Code)
SELECT ROW_NUMBER() OVER (ORDER BY Code), Code
FROM #B
SELECT *
FROM #A
DROP TABLE #A
DROP TABLE #B
我绝对推荐第一种方法。它更简单,您不必担心如何处理代码中的自动增量。TestDataTable的模式是什么?