SQL 更新(逐行复制)

SQL UPDATE (copy from row to row)

我想尝试将 Table 中一条记录的值复制到同一 table 同一列中的另一条记录。

    UPDATE
    [PDF]
SET
    [PDF].[description] = [MISC].[description]
FROM (
    SELECT
          [PDF].[TPYE]
         ,[ID]
         ,[PDF].[description]
    FROM [DB1] AS [PDF]
    
    INNER JOIN (
        SELECT
             [TYPE]
             [description]
             [ID]
        FROM [DB1]
        WHERE [TYPE] = 'MISC'
            ) AS [MISC] ON [PDF].[ID] = [MISC].[ID]
WHERE
    [PDF].[TPYE] = 'PDF'

为了进一步说明,我添加了屏幕截图。enter image description here

Table 包含几千行,我想将说明从一行复制到另一行 - 取决于 NUMBER 和 TYPE。

以这个为例。你很接近。

DECLARE @DB1 AS TABLE ( ID          INT           NOT NULL
,                       TYPE        NVARCHAR(4)   NOT NULL
,                       Description NVARCHAR(255) NULL )

INSERT INTO @DB1 ( ID, TYPE, Description )
VALUES ( 1, N'PDF', N'' )
,      ( 1, N'MISC', N'Description 1' )
,      ( 2, N'PDF', N'' )
,      ( 2, N'MISC', N'Description 2' )

SELECT  *
  FROM  @DB1
 WHERE  TYPE = 'PDF'

UPDATE  PDF
   SET  PDF.Description = MISC.Description
  FROM  @DB1 PDF
  JOIN  @DB1 MISC ON MISC.ID = PDF.ID
                 AND MISC.TYPE = 'MISC'
 WHERE  PDF.TYPE = 'PDF'

SELECT  *
  FROM  @DB1
 WHERE  TYPE = 'PDF'

请注意,如果您可以包含一些示例数据供其他读者使用,将来会有所帮助。我创建 table 结构并用一些测试数据填充它的方式是如何完成此操作的基本示例。

如果您发现某个答案有用且正确,请不要忘记将其标记为有用并点赞。这将帮助其他用户了解什么有效。这适用于整个站点,而不仅仅是您自己的问题。