Speichern des Abfrageergebnisses in einer Variablen mithilfe von MySQL

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

Wenn ich diese Abfrage mit setVariable ausführe, wird dieser Fehler angezeigt.

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
Abfragestamm
quelle

Antworten:

142

Umgeben Sie diese Auswahl mit Klammern.

SET @v1 := (SELECT COUNT(*) FROM user_rating);
SELECT @v1;
Sergio Tulentsev
quelle
11
Sollte diese Unterabfrage nur 1 Zeile und 1 Spalte enthalten? 1. #1242 - Subquery returns more than 1 row , 2.#1241 - Operand should contain 1 column(s)
Shafizadeh
1
@ RajatGupta: Wo läufst du es? Und definieren Sie "nicht funktioniert".
Sergio Tulentsev
2
@ Shafizadeh: Ja, diese Unterabfrage sollte nur eine Zeile und Spalte zurückgeben
Sergio Tulentsev
Funktioniert bei mir nicht, probiert auf phpmyadmin mysql. Es erscheint ein Fehler mit der Meldung "Eine neue Anweisung wurde gefunden, aber es gibt kein Trennzeichen zwischen ihr und der vorherigen" (übersetzt aus dem Deutschen).
Schwarz
1
Es scheint, dass der Rückgabewert eins sein muss, keine Liste von Werten
Victor S
34

Wenn Sie mehrere Variablen gleichzeitig für eine Abfrage festlegen möchten, können Sie außerdem die andere Syntax zum Festlegen von Variablen verwenden SELECT @varname:=value.

Ein praktisches Beispiel:

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

benutze das

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

getestet und funktioniert gut ...

Aman Maurya
quelle
Was bedeutet Klammern []in dieser Aussage?
Amin
nichts, es ist nur ein Platzhalter überspringen [] und setzen Sie Ihren Wert einfach in einfache Anführungszeichen
Aman Maurya
0
Select count(*) from table_name into @var1; 
Select @var1;
Kesha Viveki
quelle