2014-05-14 33 views
0

我想連接我在查詢中找到的結果。問題在於,我正在使用IF聲明根據該條目的另一列的值對結果進行別名。你可以GROUP_CONCAT如果SELECT語句的結果

這行之有效

SELECT town 
IF(is_found = 0, name, null) as not_found, 
IF(is_found = 1, name, null) as found 
FROM listing 

但是,如果我想我的組結果包括城市,我需要Concat的名稱列表的結果。

我嘗試這樣做:

SELECT town 
GROUP_CONCAT(IF(is_found = 0, name, null) as not_found) as missing_list, 
GROUP_CONCAT(IF(is_found = 1, name, null) as found) as found_list 
FROM listing 

我收到語法錯誤。

我該如何生成這樣的concat'ed列表,其中結果是有條件的IF語句。

回答

2

as沒有進入if。所以,你可以這樣做:

SELECT town, 
     GROUP_CONCAT(IF(is_found = 0, name, null)) as missing_list, 
     GROUP_CONCAT(IF(is_found = 1, name, null)) as found_list 
FROM listing 
GROUP BY town; 

我喜歡case超過if(因爲它是標準如此可在幾乎所有數據庫):

SELECT town, 
     GROUP_CONCAT(CASE WHEN is_found = 0 THEN name END) as missing_list, 
     GROUP_CONCAT(CASE WHEN is_found = 1 THEN name END) as found_list 
FROM listing 
GROUP BY town;