2010-12-04 9 views
0

Ich habe eine Abfrage, die wie folgt aussieht:MySQL: Wie wählt man eine Spalte mit einem Wert aus einer anderen Spalte, abhängig davon, welche Spalten leer sind?

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

Was mir

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

gebe Ich möchte eine zusätzliche Spalte wählen („Fehler“), die den Wert von default_error hat, wenn custom_error ist leer und der Wert von custom_error, wenn custom_error NICHT leer ist.

Irgendeine Idee, wie man das in MySQL macht?

Antwort

1

Versuchen

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

OR - wenn custom_error NULL standardmäßig

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

Wenn custom_error ist null, wenn sie leer, als Sie diese verwenden können:

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`; 
Verwandte Themen