Sqlite group_concat 选择“特殊需要”
Posted
技术标签:
【中文标题】Sqlite group_concat 选择“特殊需要”【英文标题】:Sqlite group_concat select with "special needs" 【发布时间】:2010-12-26 12:35:23 【问题描述】:我知道如何将 group_concat 与 Sqlite 一起使用,以执行以下操作:
id - f1 - f2 - f3
1 - 1 - a - NULL
2 - 1 - b - NULL
3 - 2 - c - NULL
4 - 2 - d - NULL
选择 id, f1, group_concat(f2), f3 从表 按 f1 分组
result:
2 - 1 - a,b - NULL
4 - 2 - c,d - NULL
如您所见,ID 的 1 和 3 被删除,这是预期的行为。 但我需要:
1 - 1 - a - a,b
2 - 1 - b - a,b
3 - 2 - c - c,d
4 - 2 - d - c,d
所以,每条记录都返回,另一个字段 (f3) 使用 group_concat 更新
知道如何在 Sqlite 中做到这一点吗?
谢谢
【问题讨论】:
【参考方案1】:不知道你为什么想要这个,但这里是:
select
outer_t.id
,outer_t.f1
,outer_t.f2
,inline_view.groupfoo
from t as outer_t
left join (
select
f1
,group_concat(f2) as groupfoo
from t
group by f1
) inline_view on inline_view.f1 = outer_t.f1
;
【讨论】:
【参考方案2】:使用嵌入的 sql 语句
select id, f1, f2, (select group_concat(f2) from t t2 where t2.f1 = t1.f1)
from t t1
【讨论】:
以上是关于Sqlite group_concat 选择“特殊需要”的主要内容,如果未能解决你的问题,请参考以下文章
group_concat sqlite 和 order by
查询中 group_concat 上的 SQLITE 不需要的行为