2010-12-15 4 views
2

Je suis en train de faire quelque chose comme ça dans mon MySQL stockées proc:Sélectionnez dans l'instruction IF, MySQL

if val > SELECT numericalValue FROM table where userId=theUserId then .. 

Est-il correct de faire cela, ou dois-je stocker dans un numericalValue temporaire?

+0

quand vous dites « magasin numericValue dans un temporaire, » voulez-vous dire dans une table temporaire? –

Répondre

2

Vous pouvez avoir une instruction select dans une instruction if.

Il doit être entre parenthèses et il doit évaluer à une seule ligne à chaque fois, il fonctionne bien pour les sommes et compte, et si vous retournez la valeur d'un champ, vous voulez utiliser LIMIT 1

Vous pouvez également utiliser une variable, cela fonctionnerait également.

+0

Oh, c'était les parenthèses manquantes, 'si val> (CHOISIR la valeur numérique de la table FROM où userId = theUserId) alors ..' – bobobobo

+0

Oui, les parenthèses seraient pourquoi cela ne fonctionnait pas. – Jay

1

Vous ne devriez pas avoir à le faire, mais cela rendrait les choses plus pratiques si vous envisagez de réutiliser la sélection ailleurs dans votre code.

En outre, vous devez utiliser la syntaxe suivante comme ligne directrice:

CREATE PROCEDURE sp_condition(IN var1 INT) 
BEGIN 
IF (val > SELECT numericalValue FROM table where userId='theUserId') 
    THEN SELECT 'greater'; 
    ELSE SELECT 'less than or equal'; 
END IF; 
END|