GROUP_CONCAT 有条件
GROUP_CONCAT with condition
在下面的示例中,我使用 group-concat 来连接汽车和 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
在下面的示例中,我使用 group-concat 来连接汽车和 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