我如何在我的 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
我有这个存储过程:
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