查询中 group_concat 上的 SQLITE 不需要的行为
Posted
技术标签:
【中文标题】查询中 group_concat 上的 SQLITE 不需要的行为【英文标题】:SQLITE unwanted behavior on group_concat in query 【发布时间】:2018-09-23 15:32:21 【问题描述】:我有两张这样的表:
小提琴:click here
我的查询:
select
f.id,
'' || group_concat(f.key||','||ifnull(f.value,'NULL'), ',')||'' as
key_value_pair_1,
'' || group_concat(r.key||','||ifnull(r.value,'NULL'), ',')||'' as
key_value_pair_2
FROM items_functions as f
LEFT JOIN items_functions_2 as r ON f.id = r.id
GROUP BY f.id
但这会导致一种奇怪的行为。当您运行上述链接的小提琴时,您可以看到所有结果多次显示。
但我想要的是这样的结果:
id key_value_pair_1 key_value_pair_2
214808 16,662,17,808,33,1,60,2 16,662,17,808,33,1,60,2
214809 16,902,17,1103,33,1,60,2 16,902,17,1103,33,1,60,2
218965 19,808,21,662,33,1,60,8 19,808,21,662,33,1,60,8
218966 19,110321,902,33,1,60,8 19,1103,21,902,33,1,60,8
244574 16,999,18,999,54,174 16,999,18,999,54,174
我想我的查询必须调整。 :)
如果有人碰巧对此有解决方案,那就太棒了。
提前致谢!
最好的问候, 安德烈亚斯
【问题讨论】:
你应该在加入之前进行分组。 db-fiddle.com/f/4jXdhoe4McevzJoYZd24Nk/1 【参考方案1】:我相信以下内容会满足您的要求:-
SELECT
p1.id, p1.kvp1, p2.kvp2
FROM
(
SELECT
id,
'' || group_concat(key||','||ifnull(value,'NULL'), ',')||''
AS kvp1
FROM items_functions GROUP BY id
)
AS p1
JOIN
(
SELECT
id,
'' || group_concat(key||','||ifnull(value,'NULL'), ',')||''
AS kvp2
FROM items_functions_2 GROUP BY id
)
AS p2
ON p1.id = p2.id
产生:-
【讨论】:
以上是关于查询中 group_concat 上的 SQLITE 不需要的行为的主要内容,如果未能解决你的问题,请参考以下文章
使用 MySQL 在不同字段上的多个 GROUP_CONCAT