2012-02-03 13 views
32

Voglio fare questo:Impostazione di due variabili scalari in una istruzione SELECT?

Declare @a int; 
Declare @b int; 

SET @a,@b = (SELECT StartNum,EndNum FROM Users Where UserId = '1223') 

PRINT @a 
PRINT @b 

Ma questa è una sintassi non valida. Come imposto più variabili scalari in una istruzione select? Posso fare:

Declare @a int; 
Declare @b int; 

SET @a = (SELECT StartNum FROM Users Where UserId = '1223') 
SET @b = (SELECT EndNum FROM Users Where UserId = '1223') 

PRINT @a 
PRINT @b 

Ma questo richiederà il doppio del tempo. Qual è il modo più veloce?

risposta

68
DECLARE @a int; 
DECLARE @b int; 

SELECT @a = StartNum, @b = EndNum 
FROM Users 
WHERE UserId = '1223' 
+0

Nizza, grazie. Ho difficoltà a elaborare la sintassi di SQL. Ci sono molte parole chiave e strutture che possono essere utilizzate in vari modi inaspettati. – Oliver

+0

@Oliver dovresti votare e accettare una delle risposte :) –

+0

@aF. Scusate! Mi sono distratto e ho dimenticato di controllare quando era scaduto il limite di 12 minuti. – Oliver

10

fare in questo modo:

Declare @a int; 
Declare @b int; 

SELECT @a=StartNum,@b=EndNum FROM Users Where UserId = '1223' 

PRINT @a 
PRINT @b 
1

Se si sta facendo questo in una stored procedure e non si desidera che il risultato della selezione in un gruppo di risultati di output è necessario usare la parola INTO .

Declare @a int; 
Declare @b int; 

SELECT StartNum, EndNum 
FROM Users 
Where UserId = '1223' 
INTO @a, @b; 

Inoltre può essere utilizzato in questo modo:

SELECT StartNum, EndNum 
INTO @a, @b 
FROM Users 
Where UserId = '1223'; 
Problemi correlati