繁体   English   中英

GROUP_CONCAT有条件

[英]GROUP_CONCAT with condition

在下面的示例中,我使用group-concat连接car和new_color。

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; 

使用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中会更简单。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM