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 ответа:
SELECT @var = col1, @var2 = col2 FROM Table
вот некоторые интересные сведения о SET / SELECT
- SET-это стандарт ANSI для присвоения переменных, SELECT - нет.
- SET можно назначить только одну переменную за раз, выберите можно сделать несколько задания сразу же.
- если назначение из запроса, SET может назначить только скалярное значение. Если запрос возвращает несколько значений/строк затем установить выдает ошибку. ВЫБИРАТЬ присвоит одно из значений переменная и скрыть тот факт, что несколько значений были возвращены (так вы, вероятно, никогда не знаете, почему что-то происходит в другом месте - удачи устранение неполадок, что один)
- при назначении из запроса, если нет возвращенного значения, то SET будет присвоить значение null, где выбора не будет сделайте задание вообще (так что переменная не будет изменена с Предыдущее значение)
- насколько разница в скорости - нет прямых различий между набором и ВЫБИРАТЬ. Однако возможность выбора чтобы сделать несколько назначений в одном выстрел действительно дает ему небольшую скорость преимущество над набором.