Cita, que resume de este artículo:
- SET es el estándar ANSI para la asignación de variables, SELECT no lo es.
- SET solo puede asignar una variable a la vez, SELECT puede realizar múltiples asignaciones a la vez.
- Si se asigna desde una consulta, SET solo puede asignar un valor escalar. Si la consulta devuelve múltiples valores/filas, SET generará un error. SELECCIONAR asignará uno de los valores a la variable y ocultará el hecho de que se devolvieron varios valores (por lo que es probable que nunca sepa por qué algo salió mal en otro lugar; diviértase resolviendo ese problema)
- Al asignar desde una consulta si no se devuelve ningún valor, SET asignará NULL, mientras que SELECT no realizará la asignación en absoluto (por lo que la variable no cambiará de su valor anterior)
- En cuanto a las diferencias de velocidad, no hay diferencias directas entre SET y SELECT. Sin embargo, la capacidad de SELECT para realizar varias asignaciones de una sola vez le da una ligera ventaja de velocidad sobre SET.