2017-04-18 229 views
0

在下面的示例中,我使用group-concat連接car和new_color。GROUP_CONCAT條件爲

GROUP_CONCAT(DISTINCT CONCAT(car, ' - ' , new_color) ORDER BY car SEPARATOR '; ') AS car_color 

結果:

Fiat -; 
Ford - red; 
BMW - blue;         

如何做好 ' - '(從對new_color分離車內)可以添加只有對new_color有一個值。

在我的例子中,期望的結果是:

Fiat ; 
Ford - red; 
BMW - blue; 

回答

2

使用concat_ws

GROUP_CONCAT(DISTINCT CONCAT_WS(' - ', car, case when trim(new_color) = '' then null else newcolor end) ORDER BY car SEPARATOR '; ') AS car_color 

像@Matteo Tassinari說,NULLIF(TRIM(new_color), '')將在MySQL更簡單。

+1

這將**只**如果'new_color'爲'NULL',一個空字符串仍然會被連接。 –

+1

@MatteoTassinari好,我試圖在你評論這裏時解決它。請再檢查一次。 – Blank

+0

Thanks Forward和Matteo – josei

1
SELECT GROUP_CONCAT(DISTINCT 
        CASE new_color WHEN NULL THEN car WHEN '' THEN car 
        ELSE CONCAT(car, ' - ' , new_color) END 
        ORDER BY car SEPARATOR '; ') AS car_color 
FROM car_table