2010-12-04 9 views
0

J'ai une requête qui ressemble à ceci:MySQL: Comment sélectionner une colonne avec une valeur d'une autre colonne, selon quelles colonnes sont vides?

SELECT id, description, default_error, custom_error FROM `table1`; 

Ce qui me donne

(int) (Text)  (Varchar)   (Varchar) 
id Description Default_Error  custom_error 
--------------------------------------------------- 
1 Hello  Error 123    
2 World  Error 456   This is a custom Error 

Je voudrais sélectionner une colonne supplémentaire (« erreur ») qui a la valeur de default_error si custom_error est vide, et la valeur de custom_error si custom_error n'est PAS vide.

Une idée de comment faire cela en MySQL?

Répondre

1

Essayez

SELECT id, description, default_error, custom_error, 
    IF(custom_error='', default_error, custom_error) as error 
FROM `table1`; 

OU - si custom_error est NULL par défaut

SELECT id, description, default_error, custom_error, 
    ISNULL(custom_error, default_error) as error 
FROM `table1`; 
2

Si custom_error est nul quand il est vide que vous pouvez utiliser ceci:

select id, description, coalesce(custom_error, default_error) 
0
SELECT id, description, default_error, custom_error, 
    IF(custom_error='', default_error, custom_error) as error 
FROM `table1`; 
Questions connexes