我需要做的是将一行中的Value
和RegisteryItemID
更新为1802
。
如果字段Value
和RegisteryItemID
都包含值1790
,则字段应该更改,此外,另一个名为PhaseID
的字段必须具有值{{ 1}}在其中。
这是我到目前为止所写的查询:
3018
无论如何要改变它以更有效的方式,以便我不必像我知道的那样进行物理输入吗?
答案 0 :(得分:2)
您的问题有点模糊,但是,如果我正确理解了您要尝试的问题,请创建一个stored procedure,这样您就不必输入/硬编码值每次你想使用这段代码。
在上面的链接中,详细解释了所有内容。就在不久你创建它的方式如下:
create procedure Something.YournameOfProcedure
@value1 nvarchar(50),
@value2 nvarchar(50)
@value3 nvarchar(50)
as
update [dbo].[ImproofPhaseItems] set Value = @value1,
RegistryItemID = @value1 where Value = @value2 and
RegistryItemID = @value2 and
PhaseID = '@value3;
你运行它的方式:
execute Something.YournameOfProcedure N'1801', N'1302', '1321';
然后,根据调用该特定查询的原因,您可以从.NET代码中调用它。 如果不是这种情况,并且例如值是从另一个地方导出的,则可以使用csv文件或xml,然后直接从sql代码中解析它。
答案 1 :(得分:0)
如果你不想像Bojan建议的那样使用存储过程,你可以在下面使用,但是由于你需要在每次更新后提供新的变量值,所以工作要多得多。我建议使用过程,如果已经应用所有更新,则甚至删除过程:
DECLARE @NewValue nvarchar(10)
DECLARE @PhaseID nvarchar(10)
DECLARE @OldValue nvarchar(10)
SET @NewValue = '1802'
SET @PhaseID = '3018'
SET @OldValue = '1790'
UPDATE [dbo].[ImproofPhaseItems]
SET Value = @NewValue,
RegistryItemID = @NewValue
WHERE Value = @OldValue and
RegistryItemID = @OldValue and
PhaseID = @PhaseID;
GO
SET @NewValue = 'another new value'
SET @PhaseID = 'another Phase'
SET @OldValue = 'another old value'
UPDATE [dbo].[ImproofPhaseItems]
SET Value = @NewValue,
RegistryItemID = @NewValue
WHERE Value = @OldValue and
RegistryItemID = @OldValue and
PhaseID = @PhaseID;
GO
-- and so on
答案 2 :(得分:-1)
如果这是一个重复的任务,你需要一些东西,这样你只需要输入一次sql。一种选择是Microsoft Access。使用链接表创建一个数据库到您的Sql Server数据库。然后构建一个select查询,公开要更新的字段,并提示您输入必须提供的值。
如果您没有Access,则可以编写一个Web应用程序或控制台应用程序,提示您输入值,然后运行查询。这可以在.net,php,coldfusion,java和其他语言中完成。