2010-02-02 6 views
1

Si j'ai une table MySQL comprenant les champs one, two, three et four je peux alors utiliser en quelque sorte la déclaration IF pour recevoir le champ four, que lorsqu'une certaine condition est vrai? Dois-je avoir deux ensembles de déclaration SELECT?MySQL - La sélection basée sur une instruction if

Puis-je faire (en pseudocode):

SELECT one, two, three 
IF (1 == 1) THEN 
four 
ENDIF 
FROM table 

Ou dois-je en quelque sorte à faire:

IF (1 == 1) THEN 
SELECT one, two, three, four 
ENDIF 
ELSE THEN 
SELECT one, two, three 
ENDIF 

Je suis curieux, je n'ai pas un usage spécifique pour ce .

Répondre

4

Utilisation:

SELECT t.one, 
     t.two, 
     t.three, 
     CASE WHEN 1 = 1 THEN t.four ELSE NULL END AS four 
    FROM TABLE t 

Vous ne pouvez pas avoir la colonne en option (s) dans la liste SELECT - il contient soit la colonne et une valeur appropriée ou aucune colonne du tout. Vous pouvez avoir deux instructions (ou plus) séparées par une instruction IF, mais il n'est pas idéal d'avoir une colonne supplémentaire dans l'une des instructions car vous insérez une logique de décision dans votre application pour gérer la situation de colonne manquante.

+1

Merci - c'était essentiellement tout ce que je voulais savoir. – Eikern

Questions connexes