Permitir y utilizar variables definidas por el usuario en MySQL

MySQL le permite definir sus propias variables, que puede configurar con resultados de consultas y guardar los valores para utilizarlos posteriormente. Imagine que quiere saber qué presidentes nacieron antes de Andrew Jackson. Para ello, puede recuperar su fecha de nacimiento en una variable y seleccionar otros presidentes con una fecha de nacimiento anterior al valor de dicha variable:

mysql> SELECT @birth := birth FROM president
-> WHERE last_name = 'Jackson' AND first_name = 'Andrew';

@birth := birth
1767-03-15

mysql> SELECT last_name, first_name, birth FROM president
-> WHERE birth < @birth ORDER BY birth;
last_name first_name birth
Washington George 1732-02-22
Adams John 1735-10-30
Jefferson Thomas 1743-04-13
Madison James 1751-03-16
Monroe James 1758-04-28

Las variables de usuario se nombran con la sintaxis @nombre_var y se le asigna un valor en una instrucción SELECT con la expresión @nombre_var:=valor. La primera consulta busca la fecha de nacimiento de Andrew Jackson y la asigna a la variable @birth. (El resultado de SELECT se muestra, ya que al asignar un resultado de consulta a una variable no se elimina el resultado de la consulta.) La segunda consulta hace referencia a la variable y utiliza su valor para buscar otras filas de president con un valor birth inferior.
Las variables también se pueden asignar con una instrucción SET. En este caso, se puede utilizar = o := como operador de asignación:

mysql> SET @today = CURDATE();
mysql> SET @one_week_ago := DATE_SUB(@today, INTERVAL 7 DAY);
mysql> SELECT @today, @one_week_ago;

@today @one_week_ago
2008-03-21 2008-03-14

Comparte