SQL выберите несколько столбцов в несколько переменных


Я конвертирую SQL из Teradata в SQL Server

в Teradata, они имеют формат

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

в SQL Server, я нашел

SET @variable1 = (
SELECT col1 
FROM table1
);

это позволяет использовать только один столбец/переменную для каждого оператора. Как назначить 2 или более переменных с помощью одного оператора SELECT?

2 63

2 ответа:

SELECT @variable1 = col1, @variable2 = col2
FROM table1
SELECT @var = col1,
       @var2 = col2
FROM   Table

вот некоторые интересные сведения о SET / SELECT

  • SET-это стандарт ANSI для присвоения переменных, SELECT - нет.
  • SET можно назначить только одну переменную за раз, выберите можно сделать несколько задания сразу же.
  • если назначение из запроса, SET может назначить только скалярное значение. Если запрос возвращает несколько значений/строк затем установить выдает ошибку. ВЫБИРАТЬ присвоит одно из значений переменная и скрыть тот факт, что несколько значений были возвращены (так вы, вероятно, никогда не знаете, почему что-то происходит в другом месте - удачи устранение неполадок, что один)
  • при назначении из запроса, если нет возвращенного значения, то SET будет присвоить значение null, где выбора не будет сделайте задание вообще (так что переменная не будет изменена с Предыдущее значение)
  • насколько разница в скорости - нет прямых различий между набором и ВЫБИРАТЬ. Однако возможность выбора чтобы сделать несколько назначений в одном выстрел действительно дает ему небольшую скорость преимущество над набором.