SQL SELECT multi-colonnes en multi-variables
-
20-09-2019 - |
Question
Je conversion SQL de Teradata à SQL Server
Teradata, ils ont le format
SELECT col1, col2
FROM table1
INTO @variable1, @variable2
Dans SQL Server, j'ai trouvé
SET @variable1 = (
SELECT col1
FROM table1
);
Cela ne permet une seule colonne / variable par déclaration. Comment attribuer 2 ou plusieurs variables à l'aide d'une seule instruction SELECT?
La solution
SELECT @variable1 = col1, @variable2 = col2
FROM table1
Autres conseils
SELECT @var = col1,
@var2 = col2
FROM Table
Voici quelques informations intéressantes sur SET / SELECT
- SET est la norme ANSI pour l'attribution variable SELECT n'est pas.
- SET ne peut assigner une variable à la fois, SELECT peut faire plusieurs missions à la fois.
- Si l'attribution d'une requête, SET ne peut attribuer une valeur scalaire. Si la requête retourne plusieurs valeurs / rangées puis SET soulèvera une erreur. SÉLECTIONNER attribuera une des valeurs à la variable et cacher le fait que plusieurs valeurs ont été retournés (si vous auriez probablement jamais savoir pourquoi quelque chose qui se passait mal d'ailleurs - se amuser dépannage de celui-là)
- Lors de l'attribution d'une requête s'il n'y a pas de valeur retournée alors SET attribuer NULL, où SELECT ne sera pas faire du tout l'affectation (de sorte que le variable ne sera pas modifiée à partir de son valeur précédente)
- En ce qui concerne les différences de vitesse - il n'y a pas de différences directes entre SET et SELECT. Cependant la capacité de SELECT pour effectuer plusieurs tâches dans un tir ne donne une légère vitesse avantage sur SET.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow