【发布时间】:2021-06-17 16:59:11
【问题描述】:
如您所见,key 列有重复或相同的文本,但value 没有。我想根据key 列将value 列的文本组合/附加到一个字段中,用逗号或换行符分隔它们。并删除key列的重复文本。
像这样:
是否有任何 SQL 查询代码来完成此操作?
提前致谢。
【问题讨论】:
标签: sql database sqlite database-normalization
如您所见,key 列有重复或相同的文本,但value 没有。我想根据key 列将value 列的文本组合/附加到一个字段中,用逗号或换行符分隔它们。并删除key列的重复文本。
像这样:
是否有任何 SQL 查询代码来完成此操作?
提前致谢。
【问题讨论】:
标签: sql database sqlite database-normalization
如果结果中值的顺序不重要,那么您可以使用聚合和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
【讨论】:
update 或其他东西。还有一种方法可以用换行符或任何其他字符更改逗号 (,)。第一个代码语法有效,但第二个无效并返回错误:靠近“(”:语法错误)
select 查询工作正常,但我想update 表并用自定义字符或新行更改“,”。请兄弟帮我解决这个问题,我陷入了困境。