gpt4 book ai didi

sql - 如何使用 SQL Server 2008 将一行复制到同一个表中

转载 作者:行者123 更新时间:2023-12-04 21:14:11 25 4
gpt4 key购买 nike

A)到目前为止我的方式:

sqlCommand.CommandText =
"INSERT Table1 ([column1],[column2],[column3])" +
" SELECT [column1],[column2],[column3]" +
" FROM Table1 WHERE Id =" + param +
";select scope_identity() as id";

B)我希望做这样的事情:
INSERT INTO "table1" (* (without the ID-column))
SELECT (* (without the ID-column))
FROM "table1"

注意:我正在复制到同一张表。我只想轻松地将其全部复制到另一行,同时为新行提供一个新 ID。

这是好的做法吗?可能吗?

最佳答案

我自己也遇到了同样的问题,并且想要一种很好且简单的方法来做到这一点。

我找到了一个解决方案 here 允许这样做。我稍微修改了它以删除输出 id 并使 IdColumnName 具有默认值“Id”。

IF OBJECT_ID('TableRowCopy') IS NOT NULL DROP PROCEDURE TableRowCopyGOSET ANSI_NULLS ONSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[TableRowCopy](    @TableName VARCHAR(50),    @WhereIdValue INT,    @IdColumnName VARCHAR(50) = 'Id')ASBEGIN    DECLARE @columns VARCHAR(5000), @query VARCHAR(8000);    SET @query = '' ;    SELECT @columns =        CASE            WHEN @columns IS NULL THEN column_name            ELSE @columns + ',' + column_name        END    FROM INFORMATION_SCHEMA.COLUMNS    WHERE (        TABLE_NAME = LTRIM(RTRIM(@TableName))        AND        column_name != LTRIM(RTRIM(@IdColumnName))    );    SET @query = 'INSERT INTO ' + @TableName + ' (' + @columns + ') SELECT ' + @columns + ' FROM ' + @TableName + ' WHERE ' + @IdColumnName + ' = ' + CAST(@WhereIdValue AS VARCHAR);    EXEC (@query);    SELECT SCOPE_IDENTITY();END

Example usage:

EXEC TableRowCopy 'MyTable', 3

关于sql - 如何使用 SQL Server 2008 将一行复制到同一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3967665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com