SQL SELECT 다중 열 INTO 다중 변수


85

SQL을 Teradata에서 SQL Server로 변환하고 있습니다.

Teradata에서는 형식이

SELECT col1, col2
FROM table1
INTO @variable1, @variable2

SQL Server에서

SET @variable1 = (
SELECT col1 
FROM table1
);

문당 하나의 열 / 변수 만 허용됩니다. 단일 SELECT 문을 사용하여 2 개 이상의 변수를 할당하는 방법은 무엇입니까?

답변:


168
SELECT @variable1 = col1, @variable2 = col2
FROM table1

이렇게하면 여러 SELECT에 비해 성능 / 속도가 향상됩니까? 아니면 동일합니까?
Shankar Nathan

8
진짜 대답은 그것을 테스트하고 직접 확인하는 것입니다. 비공식적 인 대답은 물론 그렇습니다.
underscore_d

35
SELECT @var = col1,
       @var2 = col2
FROM   Table

다음은 SET / SELECT에 대한 흥미로운 정보입니다.

  • SET는 변수 할당에 대한 ANSI 표준이고 SELECT는 그렇지 않습니다.
  • SET는 한 번에 하나의 변수 만 할당 할 수 있으며 SELECT는 한 번에 여러 할당을 할 수 있습니다.
  • 쿼리에서 할당하는 경우 SET는 스칼라 값만 할당 할 수 있습니다. 쿼리가 여러 값 / 행을 반환하면 SET은 오류를 발생시킵니다. SELECT는 값 중 하나를 변수에 할당하고 여러 값이 반환되었다는 사실을 숨 깁니다 (따라서 다른 곳에서 문제가 발생한 이유를 절대 알 수 없을 것입니다. 문제 해결을 재미있게하십시오)
  • 반환 된 값이 없으면 쿼리에서 할당 할 때 SET는 NULL을 할당합니다. 여기서 SELECT는 할당을 전혀 수행하지 않으므로 변수는 이전 값에서 변경되지 않습니다.
  • 속도 차이에 관해서는 SET와 SELECT 사이에 직접적인 차이가 없습니다. 그러나 한 번에 여러 할당을 수행하는 SELECT의 기능은 SET보다 약간의 속도 이점을 제공합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.