Sql 如何向变量添加update语句值?

Sql 如何向变量添加update语句值?,sql,sql-server,Sql,Sql Server,我想将数据保存在变量中,并在以后的过程中使用它 UPDATE acc_Account SET acc_Account.CompanyID = ( SELECT TOP 1 utl_Company.CompanyID FROM utl_C

我想将数据保存在变量中,并在以后的过程中使用它

UPDATE  acc_Account
                SET     acc_Account.CompanyID = ( SELECT TOP 1
                                                          utl_Company.CompanyID
                                                  FROM    utl_Company
                                                  ORDER BY CompanyID DESC
                                                )
                WHERE   acc_Account.AccountNumber = @AccountNumber 

如何将CompanyID保存在变量中,以便稍后在insert语句中使用?

在代码的开头包含以下内容:

declare @var varchar(20) -- change the data type according to your needs
set @var = (SELECT TOP 1 utl_Company.CompanyID FROM utl_Company ORDER BY CompanyID DESC)

在代码的开头包含以下内容:

declare @var varchar(20) -- change the data type according to your needs
set @var = (SELECT TOP 1 utl_Company.CompanyID FROM utl_Company ORDER BY CompanyID DESC)
在update语句之前创建一个,然后设置它,然后使用它

DECLARE @companyID INT;
SELECT @companyID = "YOUR QUERY";
在update语句之前创建一个,然后设置它,然后使用它

DECLARE @companyID INT;
SELECT @companyID = "YOUR QUERY";

我认为有效的方法是使用OUTPUT子句


我认为有效的方法是使用OUTPUT子句


这是正确的方法。不过,我向OP提出的一个建议是使用select MINCompanyID而不是top 1和order。如果表较大,则更容易理解,而且性能略有提高。@Bishoy Ezzat-before就可以了。@BishoyEzzat在之前使用它将允许您更新acc_Account SET acc_Account.CompanyID=@var,其中acc_Account.AccountNumber=@AccountNumber,这显然可以节省您在更新中再次运行查询的时间。@ADyson,这样我就可以在更新语句的'@var'之后使用它了。。它保存了更新语句@比肖伊·埃扎特:阿德森的意思是你可以:1。如上所示设置变量。2.然后在update语句中使用它,如ADyson所示。由于变量已经设置好,update语句将运行得更快,并且过程本身也会运行得更快,假设您稍后将再次使用该变量。这是正确的方法。不过,我向OP提出的一个建议是使用select MINCompanyID而不是top 1和order。如果表较大,则更容易理解,而且性能略有提高。@Bishoy Ezzat-before就可以了。@BishoyEzzat在之前使用它将允许您更新acc_Account SET acc_Account.CompanyID=@var,其中acc_Account.AccountNumber=@AccountNumber,这显然可以节省您在更新中再次运行查询的时间。@ADyson,这样我就可以在更新语句的'@var'之后使用它了。。它保存了更新语句@比肖伊·埃扎特:阿德森的意思是你可以:1。如上所示设置变量。2.然后在update语句中使用它,如ADyson所示。由于已经设置了变量,update语句将运行得更快,并且过程本身也会运行得更快,假设您稍后将再次使用该变量。