admin

在插入时在SQL中自动生成uniqueidentifier的问题

sql

我试图将数据从一个表插入到另一个表。Table1没有唯一标识符,但Table2有。我尝试插入using
NEWID(),但是出现语法错误。有人可以告诉我我做错了吗?

INSERT INTO Table2 (NEWID(), [Item Description], [Item Cost])
SELECT Description, Cost FROM  Table1
WHERE Id = '1'

阅读 308

收藏
2021-07-01

共1个答案

admin

如果尚未创建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)。

2021-07-01