SQL如何按Date、Tote等分组将多行content字段按字母顺序拼接为合并值
SQL实现分组拼接content字段方案
核心逻辑:按Date、Tote、TotearrivalTimestamp三个字段分组,同组内content值按字母升序排序后无分隔符拼接。
常用数据库实现代码
MySQL/MariaDB
直接查询结果:
SELECT Date, Tote, TotearrivalTimestamp, GROUP_CONCAT(content ORDER BY content ASC SEPARATOR '') AS content_combination FROM first_table GROUP BY Date, Tote, TotearrivalTimestamp;
如果需要写入提前创建好的desired_result表:
INSERT INTO desired_result (Date, Tote, TotearrivalTimestamp, content_combination) SELECT Date, Tote, TotearrivalTimestamp, GROUP_CONCAT(content ORDER BY content ASC SEPARATOR '') AS content_combination FROM first_table GROUP BY Date, Tote, TotearrivalTimestamp;
如果需要跳过重复的content值(匹配你示例中给出的期望结果),在content前加DISTINCT即可:
GROUP_CONCAT(DISTINCT content ORDER BY content ASC SEPARATOR '')
其他数据库适配修改
将上面代码中的GROUP_CONCAT部分对应替换即可:
- BigQuery/PostgreSQL:替换为
STRING_AGG(content, '' ORDER BY content ASC) - SQL Server 2017及以上版本:替换为
STRING_AGG(content, '') WITHIN GROUP (ORDER BY content ASC)
内容的提问来源于stack exchange,提问作者Charles
相关产品推荐
相关产品推荐

