SQL SELECT multi-columns INTO multi-variable

SqlSql ServerTeradata

Sql Problem Overview


I'm converting SQL from Teradata to SQL Server

in Teradata, they have the format

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

In SQL Server, I found

SET @variable1 = (
SELECT col1 
FROM table1
);

That only allows a single column/variable per statement. How to assign 2 or more variables using a single SELECT statement?

Sql Solutions


Solution 1 - Sql

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

Solution 2 - Sql

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

Here is some interesting information about SET / SELECT

> - SET is the ANSI standard for variable assignment, SELECT is not. > - SET can only assign one variable at a time, SELECT can make multiple > assignments at once. > - If assigning from a query, SET can only assign a scalar value. If the > query returns multiple values/rows > then SET will raise an error. SELECT > will assign one of the values to the > variable and hide the fact that > multiple values were returned (so > you'd likely never know why something > was going wrong elsewhere - have fun > troubleshooting that one) > - When assigning from a query if there is no value returned then SET will > assign NULL, where SELECT will not > make the assignment at all (so the > variable will not be changed from it's > previous value) > - As far as speed differences - there are no direct differences between SET > and SELECT. However SELECT's ability > to make multiple assignments in one > shot does give it a slight speed > advantage over SET.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionalaView Question on Stackoverflow
Solution 1 - SqlDavid MView Answer on Stackoverflow
Solution 2 - SqlSvetlozar AngelovView Answer on Stackoverflow