2012-04-09 23 views
55
SET @v1 := SELECT COUNT(*) FROM user_rating; 
SELECT @v1 

Cuando ejecuto esta consulta con la variable set, aparece este error.Cómo almacenar el resultado de la consulta en la variable usando mysql

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 
+0

http://stackoverflow.com/questions/6081436/how-to- use-alias-as-field-in-mysql/6081523 # 6081523 –

Respuesta

98

Surround que selecciona con paréntesis.

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

¿Debería esa sub consulta contener solo 1 fila y 1 columna? 1. '# 1242 - La subconsulta devuelve más de 1 fila', 2. '# 1241 - El operando debe contener 1 columna (s)' – Shafizadeh

+0

SELECCIONAR @ v1; Esta línea no funciona para mí –

+0

@RajatGupta: ¿dónde lo está ejecutando? Y defina "no funciona". –

19

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 ... 
7

uso de este

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

probados y workes bien ...

+0

¿Qué significa '' '' en este enunciado? – alex

+0

nada es solo un salto de posición skip [] y simplemente ponga su valor en comillas simples –

Cuestiones relacionadas