gpt4 book ai didi

sql - 使用 SQL 插入重复记录

转载 作者:行者123 更新时间:2023-12-02 15:39:16 26 4
gpt4 key购买 nike

我正在通过搜索 UniqueColID 并将结果插入表中来复制记录....这样做我有一个重复的条目,这是我想要的除了我希望一列不重复并且该列是 UniqueColID。 .

下面是我的代码:

CREATE PROCEDURE [dbo].[InsertDuplicateFields] 
(@UniqueColID varchar(50), @IndividualID varchar(50) = null)
AS
Begin
INSERT INTO TableCollisionBegin
SELECT * FROM TableCollisionBegin
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableCollisionDetails
SELECT * FROM TableCollisionDetails
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableCollisionLocation
SELECT * FROM TableCollisionLocation
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableDriver
SELECT * FROM TableDriver
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableFollowUp
SELECT * FROM TableFollowUp
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableOfficerLogs
SELECT * FROM TableOfficerLogs
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TablePolice
SELECT * FROM TablePolice
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableRecVerified
SELECT * FROM TableRecVerified
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableSignature
SELECT * FROM TableSignature
WHERE [IndividualID] = @IndividualID;

INSERT INTO TableTrailer
SELECT * FROM TableTrailer
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableValidateLog
SELECT * FROM TableValidateLog
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableVehicle
SELECT * FROM TableVehicle
WHERE [UniqueColID] = @UniqueColID;

INSERT INTO TableWitness
SELECT * FROM TableWitness
WHERE [UniqueColID] = @UniqueColID;


End

每个表都有 NUMEROUS 列,但它们都共享 UniqueColID。

当我插入副本时,我希望所有详细信息都是重复的,但我想插入一个新的 UniqueColID。我该怎么做?

新的 UniqueColID 是由 ASP.NET 代码中的特殊方法生成的。我想要 2 个或 3 个或 4 个不同的 UniqueColID,其余列是重复的。

我尝试了您所说的第二个代码块,但出现错误:

"Unknown object type 'TEMPORARY' used in a CREATE, DROP, or ALTER statement."





CREATE PROCEDURE [dbo].[AmendInsertDuplicateFields] (@UniqueColID varchar(50), @NewUniqueColID varchar(50))

AS
Begin CREATE TEMPORARY TABLE Temp AS SELECT * FROM [MVCNew].[dbo].[CollisionBegin] WHERE [UniqueColID] = @UniqueColID;

UPDATE Temp SET UniqueColID = @NewUniqueColID;
INSERT INTO [MVCNew].[dbo].[CollisionBegin] SELECT * FROM Temp;
DROP TEMPORARY TABLE IF EXISTS Temp;
End

我只是在想....我是否可以插入一个带有一些随机 UniqueColID 值的新记录,但所有其他列都插入了值“o”或“u”或“一些随机文本”,然后我将 UniqueColID 的所有列插入到这个新记录中,除了 UniqueColID?这样我就会有一个新的 UniqueColID,其余列具有相同的值。

KCD 我已经尝试了你的两个代码块,但都没有用.. :(

我个人不明白 SELECT @NewUniqueColID.... 是如何工作的,因为表中没有名为 @NewUniqueColID 的值的列

最佳答案

无论看起来多么可怕,我都建议使用指定完整列列表的查询。但是您不需要自己输入所有字段:使用 SQL Server Management Studio,右键单击对象资源管理器中的表并选择菜单项“将表编写为 | INSERT To | 新查询窗口”。

这会给你这样的东西:

INSERT INTO [dbo].[TableOfficerLogs]
([UniqueColID]
,[OtherField1]
,[OtherField2] -- etc.
,[OtherFieldN]
VALUES
(<UniqueColID, int,>
,<OtherField1, nvarchar(200),>
,<OtherField2, nvarchar(200),> --etc.
,<OtherFieldN, nvarchar(200),>)

不要被这吓到——您仍然不会手动输入所有值。现在让该窗口单独停留一秒钟,然后返回到对象资源管理器。使用同一个表上的上下文菜单,获取另​​一个脚本:“脚本表为|选择到|新查询窗口”。这将是一个完全标准的选择列表,列出了您的所有字段。复制整个查询并将其粘贴到第一个查询窗口中的 VALUES 子句上。

这将为您提供一个完整的 INSERT ... SELECT 查询,其中列出了所有字段。现在,只需根据需要替换 SELECT 部分中的 UniqueColID。

此外,如果您事先知道新的 UniqueColID 值,请在 FROM 子句中加入它们(表示为表值参数,如果您在存储过程中执行所有这些操作):您最终会得到复制的数量不限,每个都具有您指定的 ID。

更新:

这两个“Script Table as”操作会得到这样的结果,列出了所有字段:

INSERT INTO [dbo].[TableOfficerLogs]
([UniqueColID]
,[OtherField1]
,[OtherField2] -- etc.
,[OtherFieldN]
SELECT [UniqueColID]
,[OtherField1]
,[OtherField2] -- etc.
,[OtherFieldN]

现在,要真正进行复制,您需要修改它。您的代码最终可能看起来像这样:

CREATE PROCEDURE [dbo].[InsertDuplicateFields]        
(@UniqueColID varchar(50), @NewUniqueColID varchar(50))
AS

INSERT INTO [dbo].[TableOfficerLogs]
([UniqueColID]
,[OtherField1]
,[OtherField2] -- etc.
,[OtherFieldN]
SELECT @NewUniqueColID
,[OtherField1]
,[OtherField2] -- etc.
,[OtherFieldN]
WHERE UniqueColID = @UniqueColID

这将复制指定的行并用新 ID 替换旧 ID。当然,您会为 8 个表中的每一个重复此过程。

关于sql - 使用 SQL 插入重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10922940/

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