Подтвердить что ты не робот

Множественные столбцы SQL SELECT с несколькими переменными INTO

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

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

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

В SQL Server я нашел

SET @variable1 = (
SELECT col1 
FROM table1
);

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

4b9b3361

Ответ 1

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

Ответ 2

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

Вот некоторая интересная информация о SET/SELECT

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