No, es mucho más complejo, y además en MySQL no puedes guardar una columna, un registro o una tabla en una variable de usuario porque no existen los tipos de dato RECORD, COLUMN y TABLE en MySQL.
El primer problema (y ventaja) que te enfrentas es que las variables de usuario operan en tiempo d ejecución, por lo que su valor puede cambiar a medida que los diferntes campos o registros son leídos:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.00 sec)
mysql
> SELECT @a
:=1, @a
, @a
:=@a
+3, @a
, @a
:=@a
*25, @a
, @a
:=0, @a
;+-------+------+----------+------+-----------+------+-------+------+
| @a:=1 | @a | @a:=@a+3 | @a | @a:=@a*25 | @a | @a:=0 | @a |
+-------+------+----------+------+-----------+------+-------+------+
| 1 | 1 | 4 | 4 | 100 | 100 | 0 | 0 |
+-------+------+----------+------+-----------+------+-------+------+
Como puedes apreciar, la variable va cambiando de valor conforme va siendo usada,
en la misma línea. Se puede usar una variable de usuario para "recordar" cuál fue el valor anterior de un campo en un registro, y a su vez para determinar si se necesita cambiarlo. Pero como estas variables son dinámicas, deben ser cambiadas al final de la sentencia, cuando ya no afecten el resultado de las otras operaciones.
Además, ten en cuenta que el valor inicial de las variables de usuario es NULL, por lo que deben ser inicializadas antes de ser usadas, o se destruirá cualqueir dato que se les ingrese.
Pero como las variables de usuario crearán columnas en las consultas usadas, todas estas consultas deben a su vez estar contenidas en otras mayores, que sólo devuelvan lo necesario:
Código MySQL:
Ver original conductor,
vehiculo
IF(conductor
= @cond
, '', conductor
) vehiculo,
(@cond:=conductor) result
(SELECT conductor
, vehiculo
, @cond
:='' conductores c
INNER JOIN conductores_vehiculos cv
ON c.id
= cv.idconductor
INNER JOIN vehiculos v
ON cv.idconductor
= v.id
) T1
) T2
Estoy poniendo el anidamiento exterior sólo para que devuelva dos columnas.
Nota: Agrupamientos, ordenaciones o cualquier otra condición puesta en este tipo de consultas puede requerir consultas muchísmo más complejas, con múltiples variables y condiciones de evaluación de las mismas que son un verdadero dolor de cabeza.
Nota 2: Las variables de usuario existen y son permanentes dentro de una conexión de un usuario y son invisibles para otras conexiones de otros usuarios (incluido el mismo usuario). Mueren sólo cuando la conexión se cierra y mantienen su valor mientas la conexion siga abierta, por lo cual es conveniente, si se las va a volver a usar en la misma conexión, que sean vuelas a inicalizar previamente.