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

speichern Wenn ich diese Abfrage mit set Variable ausführen, wird dieser Fehler angezeigt.Wie Abfrage-Ergebnis in Variable mit Hilfe von 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 –

Antwort

98

Surround, die mit Klammern auswählen.

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

Sollte diese Unterabfrage nur 1 Zeile und 1 Spalte enthalten? 1. '# 1242 - Unterabfrage liefert mehr als 1 Zeile', 2. '# 1241 - Operand sollte 1 Spalte (n) enthalten' – Shafizadeh

+0

SELECT @ v1; Diese Zeile funktioniert nicht für mich –

+0

@RajatGupta: wo fährst du es? Und definieren Sie "nicht funktioniert". –

19

Außerdem, wenn Sie durch eine Abfrage mehrere Variablen auf einmal einstellen möchten, können Sie die andere Syntax für die Einstellung Variablen verwenden, die so geht: SELECT @varname:=value.

Ein praktisches Beispiel:

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

Verwendung dieses

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

getestet und workes fein ...

+0

Was bedeutet Klammern '[]' in dieser Aussage? – alex

+0

nichts ist nur ein Platzhalter überspringen [] und setzen Sie Ihren Wert in einfache Anführungszeichen –