2009-01-22 2 views

답변

78

뭔가 같은 :

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

완벽한, 감사합니다! – jandersson

1

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

그것은이 작업 한 사소한 뭔가를 두 개의 별도의 선택 작업을 할 조금 낭비 보인다

어때?

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

잘 작동합니다.

9

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

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

가주의 :이 코드는 while 루프처럼 작동 심지어 쿼리 테이블 수와 할당 그런 식으로 할

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

.

  • 여러 행이있는 경우 각 행은 변수에 할당되고 마지막 행은 왼쪽 행에 있습니다. 순서 지정을 지정하지 않으면 마지막 행이 될 행을 제어 할 수 없습니다.
  • 행이 없으면 변수가 전혀 할당되지 않습니다. 변수는 null로 설정되지 않으며 변경되지 않습니다. 할당이 루프에서 수행되면 (변수가 변경되지 않으므로 일반적으로 무한 루프가 발생 함) 주요 문제입니다.

SELECT 지정보다 SET 할당을 사용하는 것이 좋습니다. 위의 두 시나리오 모두를 고려할 때만 SELECT 할당을 사용하십시오.

관련 문제