programing

T-SQL, 단일 선택에서 둘 이상의 변수 업데이트

testmans 2023. 7. 4. 21:45
반응형

T-SQL, 단일 선택에서 둘 이상의 변수 업데이트

한 번의 선택으로 둘 이상의 로컬 변수를 업데이트할 수 있습니까?

다음과 같은 것:

set
    @variableOne = avg(someColumn),
    @variableTwo = avg(otherColumn)
    from tblTable

이 작업과 같은 사소한 작업에 대해 두 개의 별도 선택 작업을 수행하는 것은 다소 낭비가 되는 것 같습니다.

set @variableOne = ( select avg(someColumn) from tblTable )
set @variableTwo = ( select avg(otherColumn) from tblTable )

이와 같은 것:

select @var1 = avg(someColumn), @var2 = avg(otherColumn) 
from theTable

SELECT 할당을 사용하여 여러 변수를 할당할 수 있습니다.이 코드는 상수의 단일 행을 생성하고 각 행을 변수에 할당합니다.

SELECT
  @var1 = 1,
  @var2 = 'Zeus'

테이블을 쿼리하고 다음과 같은 방식으로 할당할 수도 있습니다.

SELECT
  @var1 = c.Column1,
  @var2 = c.Column2,
FROM
  Customers c
WHERE c.CustomerID = @CustomerID

주의: 이 코드는 일시적인 루프처럼 작동합니다.

  • 행이 여러 개인 경우 각 행이 변수에 할당되고 마지막 행이 변수에 남아 있게 됩니다.순서를 지정하지 않은 경우 마지막 행이 될 행에 대한 제어를 포기했습니다.
  • 행이 없으면 변수가 전혀 할당되지 않습니다.변수는 null로 설정되지 않고 변경되지 않은 상태로 유지됩니다.이는 할당이 루프에서 수행되는 경우(일반적으로 변수가 변경되지 않으므로 무한 루프가 발생함) 핵심 문제입니다.

SELECT 할당보다 SET 할당을 사용하는 것을 선호합니다.위의 두 시나리오를 모두 고려할 때만 SELECT 할당을 사용하십시오.

어때.

SELECT  @variableOne = avg(someColumn),  @variableTwo = avg(otherColumn) from tblTable 

저한테는 잘 맞습니다.

SELECT DISTINCT 
@Var1 = Column1,
@Var2 = Column2
FROM MyTable 
WHERE Columnx = @Parm1

언급URL : https://stackoverflow.com/questions/469318/t-sql-updating-more-than-one-variable-in-a-single-select

반응형