variable usar una stored query print from declarar consulta como mysql

usar - MySQL: establecer la variable de usuario a partir del resultado de la consulta



variables en mysql select (4)

Primero echemos un vistazo a cómo podemos definir una variable en mysql

Para definir una varible en mysql debe comenzar con ''@'' como @ {variable_name} y este ''{variable_name}'', podemos reemplazarlo por nuestro nombre de variable.

Ahora, cómo asignar un valor en una variable en mysql. Para esto tenemos muchas maneras de hacerlo

  1. Usando la palabra clave ''SET''.

Ejemplo: - mysql> SET @a = 1;

  1. Sin usar la palabra clave ''SET'' y usando '': =''.

Ejemplo: - mysql> @a: = 1;

  1. Al usar la instrucción ''SELECT''.

Ejemplo: - mysql> selecciona 1 en @a;

Aquí @a es una variable definida por el usuario y 1 se va a asignar en @a.

Ahora, cómo obtener o seleccionar el valor de @ {variable_name}.

podemos usar la declaración de selección como

Ejemplo: -

mysql> selecciona @a;

mostrará la salida y mostrará el valor de @a.

Ahora cómo asignar un valor de una tabla en una variable.

Para esto podemos usar dos enunciados como: -

  1. @a: = (seleccione emp_name del empleado donde emp_id = 1);

  2. seleccione emp_name en @a del empleado donde emp_id = 1;

Siempre tenga cuidado emp_name debe devolver el valor único, de lo contrario le arrojará un error en este tipo de instrucciones.

referir esto: - http://www.easysolutionweb.com/sql-pl-sql/how-to-assign-a-value-in-a-variable-in-mysql

¿Es posible establecer una variable de usuario basada en el resultado de una consulta en MySQL?

Lo que quiero lograr es algo como esto (podemos suponer que tanto el USER como el GROUP son únicos):

set @user = 123456; set @group = select GROUP from USER where User = @user; select * from USER where GROUP = @group;

Tenga en cuenta que sé que es posible, pero no deseo hacer esto con consultas anidadas.


Sí, pero necesita mover la asignación de variable a la consulta:

SET @user := 123456; SELECT @group := `group` FROM user WHERE user = @user; SELECT * FROM user WHERE `group` = @group;

Caso de prueba:

CREATE TABLE user (`user` int, `group` int); INSERT INTO user VALUES (123456, 5); INSERT INTO user VALUES (111111, 5);

Resultado:

SET @user := 123456; SELECT @group := `group` FROM user WHERE user = @user; SELECT * FROM user WHERE `group` = @group; +--------+-------+ | user | group | +--------+-------+ | 123456 | 5 | | 111111 | 5 | +--------+-------+ 2 rows in set (0.00 sec)

Tenga en cuenta que para SET , ya sea = o := se puede utilizar como operador de asignación. Sin embargo, dentro de otras declaraciones, el operador de asignación debe ser := y no = porque = se trata como un operador de comparación en las sentencias no establecidas.

ACTUALIZAR:

Además de los comentarios a continuación, también puede hacer lo siguiente:

SET @user := 123456; SELECT `group` FROM user LIMIT 1 INTO @group; SELECT * FROM user WHERE `group` = @group;


Simplemente agregue paréntesis alrededor de la consulta:

set @user = 123456; set @group = (select GROUP from USER where User = @user); select * from USER where GROUP = @group;


Úselo de esta forma para que el resultado no se muestre al ejecutar el procedimiento almacenado.

La consulta:

SELECT a.strUserID FROM tblUsers a WHERE a.lngUserID = lngUserID LIMIT 1 INTO @strUserID;

Mohammed Hasan (Rupam)