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

Antworten:


142

Umgeben Sie diese Auswahl mit Klammern.

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

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

8

benutze das

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

getestet und funktioniert gut ...


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.