我如何在我的 INSERT 语句中使用(可能)临时 table 而不是所有这些 SELECT 语句?

How do I use (probably) a temp table instead of all these SELECT statements inside my INSERT statement?

我有这个存储过程:

CREATE PROCEDURE [dbo].[InsertStuff]
    @RequestId int
AS
BEGIN
    SET NOCOUNT ON

    INSERT INTO [dbo].[MyTable] ([Id], [Column2], [AnotherColumn])
    VALUES
        ((SELECT Id FROM [dbo].[MyTable] WHERE Id = @RequestId)
        ,(SELECT Column2 FROM [dbo].[MyTable] WHERE Id = @RequestId)
        ,(SELECT AgreementTypeId FROM [dbo].[MyTable] WHERE Id = @RequestId))
END

我怎样才能修改它,这样我就不会执行所有这些 select 语句...这对性能来说太糟糕了,更不用说糟糕的设计了。我假设我可以使用 temp table 但我希望看到它为我详细说明我将在存储过程中在哪里以及如何执行此操作。谢谢

试试这个:

INSERT INTO [dbo].[MyTable]
    ([Id]
    ,[Column2]
    ,[AnotherColumn])
SELECT Id, Column2, AgreementTypeId 
FROM [dbo].[MyTable] WHERE Id = @RequestId

你不能说喜欢吗

SELECT Id,Column2,AgreementTypeId  
FROM [dbo].[MyTable] WHERE Id = @RequestId