2009-01-26 6 views
1

Quelqu'un peut-il définir ma syntaxe MySQL directement s'il vous plaît? J'essaie de définir une variable utilisateur appelée "secondes" pour égaler la sortie de la requête ci-dessous (et elle fonctionne par elle-même), mais je reçois constamment des erreurs "Vous avez une erreur dans la syntaxe SQL".Variables utilisateur - syntaxe de combat

SET @seconds=AVG(t2.epoch-t1.epoch) 
      FROM tmp_4045_metrics AS t1, tmp_4045_metrics AS t2 
      WHERE t1.seq+1 = t2.seq 

J'ai essayé SELECT AVG .... (SELECT AVG ...), et pas mal d'autres, mais toujours la même erreur avertissant que ma syntaxe est incorrecte et jamais des indices à l'endroit où il est incorrect .

Quelqu'un peut-il me diriger dans la bonne direction?

Merci, Rich

Répondre

1

Si je me souviens bien (et il fonctionne sur MS SQL Server au travail), cela devrait le faire:

Select @seconds=AVG(t2.epoch-t1.epoch) 
      FROM tmp_4045_metrics AS t1, tmp_4045_metrics AS t2 
      WHERE t1.seq+1 = t2.seq 
0

maintenant les SELECT @seconds = ... œuvres sans erreur - cracking :) et SELECT @seconds retourne, mais il est vide.

Et j'ai triplement vérifié l'instruction renvoie une valeur (300 secondes pour être précis). Retour à la planche à dessin

Merci pour la suggestion cependant, mieux que ce que j'avais accompli par moi-même.

0

Dans une instruction SELECT, utilisez le: = opérateur d'affectation (pas = opérateur):

SELECT @seconds := AVG(t2.epoch-t1.epoch) 
    FROM tmp_4045_metrics AS t1, tmp_4045_metrics AS t2 
    WHERE t1.seq+1 = t2.seq