我正在尝试将数据从一个表插入到另一个表中。表1没有唯一标识符,但表2没有。我试图使用NEWID()
插入,但我收到语法错误。有人可以告诉我我做错了吗?
INSERT INTO Table2 (NEWID(), [Item Description], [Item Cost])
SELECT Description, Cost FROM Table1
WHERE Id = '1'
答案 0 :(得分:3)
如果尚未创建Table2,您可以使用此查询:
SELECT
NEWID() AS [ID]
,Description AS [Item Description]
,Cost AS [Item Cost]
INTO Table2
FROM Table1
WHERE Id = '1'
但是,如果已经创建了表2的模式,并且它有一个标识符列,那么您可以使用:
INSERT INTO Table2 ([ID], [Item Description], [Item Cost])
SELECT
NEWID()
, Description
, Cost
FROM Table1
WHERE Id = '1'
但是,如果您还没有为Table2创建架构,那么我建议使用以下代码创建表的架构并使用Table1
中的数据填充其中的数据。
CREATE TABLE Table2 (
[ID] INT Identity
,[Item Description] AS NVARCHAR(MAX)
,[Item Cost] AS NUMERIC(18, 2))
INSERT INTO Table2([Item Description] , [Item Cost])
SELECT
Description
, Cost
FROM Table1
WHERE Id = '1'
将ID列设置为Identity将自动生成每行的UNIQUE标识号,您不必担心填充。该数字为增量,默认情况下,每行增加1,从1开始。
您还可以通过将[ID]列定义为[ID] INTEGER IDENTITY(1000, 2)
来定义起始编号和增量值,这将使起始值为1000,增量将为2(但这只是FYI)。< / p>