SQL中GROUP_CONCAT相关用法

测试数据

SELECT ps.id,ps.session_name,ps.start_time,ps.end_time
FROM product_session_rel psr
LEFT JOIN policy_session ps ON psr.session_id = ps.id AND ps.is_deleted = 'false' 
WHERE psr.sub_product_id = 1566005568733085696 and psr.is_deleted = 'false'

 

 GROUP_CONCAT函数基本用法

-- GROUP_CONCAT函数用法:分组拼接字符串
-- GROUP_CONCAT(ps.session_name) 分组拼接字符串,默认使用逗号分割
-- GROUP_CONCAT(ps.session_name SEPARATOR ';') 分组拼接字符串,使用指定字符分割
-- GROUP_CONCAT(ps.start_time,ps.end_time SEPARATOR ';') 分组拼接两个字段,字段之间没有符号分割,数据之间有符号分割
-- GROUP_CONCAT(CONCAT(ps.start_time,'-',ps.end_time) SEPARATOR ';') 分组拼接两个字段,字段之间使用指定符号分割,数据之间用分号分割
SELECT GROUP_CONCAT(ps.session_name SEPARATOR ';')
FROM product_session_rel psr
LEFT JOIN policy_session ps ON psr.session_id = ps.id AND ps.is_deleted = 'false' 
WHERE psr.sub_product_id = '1566005568733085696' and psr.is_deleted = 'false'

 

GROUP_CONCAT(CONCAT(ps.start_time,'-',ps.end_time) SEPARATOR ';')

SELECT GROUP_CONCAT(CONCAT(ps.start_time,'-',ps.end_time) SEPARATOR ';')
FROM product_session_rel psr
LEFT JOIN policy_session ps ON psr.session_id = ps.id AND ps.is_deleted = 'false' 
WHERE psr.sub_product_id = '1566005568733085696' and psr.is_deleted = 'false'

 

 GROUP_CONCAT与 CASE WHEN ... THEN ... WHEN ... THEN ... ELSE ... END 联合使用

SELECT 
GROUP_CONCAT(
CASE WHEN ps.session_name IS NULL THEN CONCAT(ps.start_time,'-',ps.end_time)
WHEN ps.session_name IS NOT NULL THEN ps.session_name
ELSE '这不会触发' END 
SEPARATOR ';')
FROM product_session_rel psr
LEFT JOIN policy_session ps ON psr.session_id = ps.id AND ps.is_deleted = 'false' 
WHERE psr.sub_product_id = '1566005568733085696' and psr.is_deleted = 'false';

posted @ 2023-02-09 15:09  DHaiLin  阅读(210)  评论(0编辑  收藏  举报