98 votes

Comment stocker le résultat d'une requête dans une variable à l'aide de mysql ?

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

Lorsque j'exécute cette requête avec set variable, cette erreur est affichée.

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 votes

157voto

Sergio Tulentsev Points 82783

Entourez cette sélection de parenthèses.

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

15 votes

Cette sous-requête doit-elle contenir une seule ligne et une seule colonne ? 1. #1242 - Subquery returns more than 1 row , 2. #1241 - Operand should contain 1 column(s)

1 votes

@RajatGupta : où l'exécutez-vous ? Et définissez "ne fonctionne pas".

3 votes

@Shafizadeh : oui, cette sous-requête devrait retourner une seule ligne et une seule colonne.

38voto

Yirkha Points 2143

En outre, si vous voulez définir plusieurs variables à la fois par une seule requête, vous pouvez utiliser l'autre syntaxe de définition des variables qui se présente comme suit : SELECT @varname:=value .

Un exemple concret :

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

10voto

aman Points 21

Utiliser ce

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

testé et fonctionne bien...

0 votes

Qu'est-ce que les parenthèses [] signifie dans cette déclaration ?

3voto

Kesha Viveki Points 59
Select count(*) from table_name into @var1; 
Select @var1;

1voto

Amir Points 644

J'essaie de faire quelque chose de similaire ici. J'obtiens cependant une erreur dans ma syntaxe SQL :

SET @dc = (SELECT CONCAT('DROP SCHEMA IF EXISTS ', SCHEMA_NAME,';') FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'tc1-student');
SELECT @dc;
PREPARE drop_dc FROM @dc;
EXECUTE drop_dc;
DEALLOCATE PREPARE drop_dc;

La requête SELECT actuelle fonctionne correctement. Mais lorsque j'essaie de préparer la déclaration à partir de la variable @dc, j'obtiens une erreur de syntaxe SQL. Y a-t-il quelque chose de particulier ?

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X