我有一个包含 3 列的表格(
ID
、key
、value
):key
有重复文本,但 value
没有。
如何根据
value
将key
的文本合并/追加到一个字段中,用逗号或换行符分隔,并删除key
的重复文本?如果结果中值的顺序不重要,那么您可以使用聚合和
GROUP_CONCAT()
来完成,这在 SQLite 中不支持 ORDER BY
子句,并且不保证值的顺序:
SELECT MIN(ID) ID, key, GROUP_CONCAT(value) value
FROM tablename
GROUP BY key
如果您需要按
ID
排序的值,请使用GROUP_CONCAT()
窗口函数:
SELECT DISTINCT
MIN(ID) OVER (PARTITION BY key) ID,
key,
GROUP_CONCAT(value) OVER (
PARTITION BY key
ORDER BY ID
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) value
FROM tablename