SQL SELECT multi-colonne in multi-variabile
-
20-09-2019 - |
Domanda
sto convertendo SQL da Teradata a SQL Server
in Teradata, hanno il formato
SELECT col1, col2
FROM table1
INTO @variable1, @variable2
In SQL Server, ho trovato
SET @variable1 = (
SELECT col1
FROM table1
);
Che solo permette una singola colonna / variabile per dichiarazione. Come assegnare 2 o più variabili utilizzando una singola istruzione SELECT?
Soluzione
SELECT @variable1 = col1, @variable2 = col2
FROM table1
Altri suggerimenti
SELECT @var = col1,
@var2 = col2
FROM Table
Ecco alcune interessanti informazioni SET / SELECT
- SET è lo standard ANSI per l'assegnazione variabili, SELECT non è.
- SET può assegnare una sola variabile alla volta, SELEZIONA può fare di più le assegnazioni in una sola volta.
- Se l 'assegnazione da una query, SET può assegnare solo un valore scalare. Se la query restituisce più valori / righe allora SET genererà un errore. SELEZIONARE assegnerà uno dei valori alla variabile e nascondere il fatto che più valori sono stati restituiti (così si sarebbe probabilmente mai sapere perché qualcosa stava andando male altrove - divertirsi la risoluzione dei problemi che uno)
- Quando si assegna da una query, se non v'è alcun valore restituito allora SET assegnare NULL, dove SELEZIONA no eseguire l'assegnazione a tutti (in modo che il variabile non sarà cambiato dalla sua valore precedente)
- Per quanto riguarda le differenze di velocità - non ci sono differenze diretti tra SET e SELECT. Tuttavia la capacità di SELEZIONA per fare assegnazioni multiple in un unico colpo fa dare un leggero velocità vantaggio rispetto SET.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow