Cómo almacenar el resultado de la consulta en una variable usando mysql

92
SET @v1 := SELECT COUNT(*) FROM user_rating;
SELECT @v1

Cuando ejecuto esta consulta con setvariable se muestra este error.

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
near 'SELECT count(*) FROM user_rating' at line 1

Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000

(1 row(s) returned)
Execution Time : 00:00:00:343
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:343
Maestro de consultas
fuente

Respuestas:

148

Rodee esa selección con paréntesis.

SET @v1 := (SELECT COUNT(*) FROM user_rating);
SELECT @v1;
Sergio Tulentsev
fuente
12
¿Esa subconsulta debería contener solo 1 fila y 1 columna? 1. #1242 - Subquery returns more than 1 row , 2.#1241 - Operand should contain 1 column(s)
Shafizadeh
1
@RajatGupta: ¿dónde lo estás ejecutando? Y defina "no funciona".
Sergio Tulentsev
2
@Shafizadeh: sí, esa subconsulta debería devolver solo una fila y columna
Sergio Tulentsev
No funciona para mí, probé en phpmyadmin mysql. Aparece un error que dice "Se encontró una nueva instrucción, pero no hay un delimitador entre esta y la anterior" (traducido del alemán).
Negro
1
Parece que el valor de retorno tiene que ser uno, no una lista de valores
Victor S
35

Además, si desea establecer múltiples variables a la vez por una consulta, puede utilizar la otra sintaxis para establecer las variables que dice así: SELECT @varname:=value.

Un ejemplo práctico:

SELECT @total_count:=COUNT(*), @total_price:=SUM(quantity*price) FROM items ...
Yirkha
fuente
8

utilizar esta

 SELECT weight INTO @x FROM p_status where tcount=['value'] LIMIT 1;

probado y funciona bien ...

Aman Maurya
fuente
¿Qué significan los corchetes []en esta declaración?
amin
nada, es solo un marcador de posición omitir [] y poner su valor entre comillas simples
Aman Maurya
2
Select count(*) from table_name into @var1; 
Select @var1;
Kesha Viveki
fuente