sql >> Databasteknik >  >> RDS >> Sqlserver

SET kontra SELECT vid tilldelning av variabler?

Citat, som sammanfattar från denna artikel:

  1. SET är ANSI-standarden för variabeltilldelning, SELECT är det inte.
  2. SET kan bara tilldela en variabel åt gången, SELECT kan göra flera tilldelningar samtidigt.
  3. Om du tilldelar från en fråga kan SET endast tilldela ett skalärt värde. Om frågan returnerar flera värden/rader kommer SET att visa ett fel. SELECT kommer att tilldela ett av värdena till variabeln och dölja det faktum att flera värden returnerades (så att du förmodligen aldrig skulle veta varför något gick fel någon annanstans - ha kul med att felsöka det)
  4. När man tilldelar från en fråga om inget värde returneras kommer SET att tilldela NULL, där SELECT inte gör tilldelningen alls (så variabeln kommer inte att ändras från dess tidigare värde)
  5. När det gäller hastighetsskillnader - det finns inga direkta skillnader mellan SET och SELECT. Men SELECT:s förmåga att göra flera tilldelningar i ett slag ger den dock en liten hastighetsfördel jämfört med SET.


  1. Använd TYPE_ID() för att få ID för en datatyp i SQL Server

  2. Returnera en lista över beräknade kolumner i SQL Server

  3. Kan en MySQL-utlösare simulera en CHECK-begränsning?

  4. Anteckningar om PostgreSQL B-Tree Index