2015-03-31 101 views
0

我有這樣的MySQL查詢:重寫默認值失敗

SELECT event.*, GROUP_CONCAT(forname, ' ', surname SEPARATOR ', ') as real_name 
FROM  event LEFT JOIN user ON event.organizer = user.id 
WHERE owner IS NOT NULL 
GROUP BY event.id 
ORDER BY startdatetime ASC 

輸出打印在PHP中:

print($zeile['real_name'] == '' ? $zeile['organizer'] : $zeile['real_name']); 

這工作得很好,但我問自己,如果有可能在SQL中實現三元操作。我的意思是: 結果集的real_name列將取值爲GROUP_CONCAT(forname, ' ', surname SEPARATOR ', ')(如果連接成功),如果沒有,則爲event.organizer

例如::

回答

1

記錄其加入標準無法實現將NULL在每列從user表,其中包括在加入標準本身中使用的那些。你可以這樣使用這個事實:

IF(user.id IS NULL, event.organizer, GROUP_CONCAT(forname, ' ', surname SEPARATOR ', ')) 
1

您可以在您的要求一樣,使用IF

  // Condition //Succeded //FAILED          
SELECT IF (forname = '', organizer, forname) FROM ......