获取 SQLite 中 GROUP_CONCAT 的所有 id
Posted
技术标签:
【中文标题】获取 SQLite 中 GROUP_CONCAT 的所有 id【英文标题】:Get all ids of GROUP_CONCAT in SQLite 【发布时间】:2021-08-08 03:28:54 【问题描述】:表 B
id name tablename
1 abc table1
2 xyz table2
3 abc table1
4 sdf table2
5 dfg table1
查询:
SELECT B.tablename, GROUP_CONCAT(B.id),GROUP_CONCAT(B.name||'-'||cnt)
FROM (
SELECT tablename, id, name, COUNT(*) cnt
FROM B
GROUP BY tablename,name
) B GROUP BY B.tablename
输出:
| tablename | GROUP_CONCAT(B.id) | GROUP_CONCAT(B.nameB||'-'||cnt) |
| ------ | ------------------ | ------------------------------- |
| table1 | 1,5 | abc-2,dfg-1 |
| table2 | 2,4 | xyz-1,sdf-1 |
但是在这里我没有得到完整的 ID,正如您在表 1 的输出中看到的那样。
我想要类似的东西:
| tablename | GROUP_CONCAT(B.id) | GROUP_CONCAT(B.nameB||'-'||cnt) |
| ------ | ------------------ | ------------------------------- |
| table1 | 1,3,5 | abc-2,df-1 |
| table2 | 2,4 | xyz-1,sdf-1 |
请帮我解决这个问题。
【问题讨论】:
【参考方案1】:您也应该在子查询中将GROUP_CONCAT()
用于id
s:
SELECT tablename, GROUP_CONCAT(id), GROUP_CONCAT(name||'-'||cnt)
FROM (
SELECT tablename, GROUP_CONCAT(id) id, name, COUNT(*) cnt
FROM B
GROUP BY tablename, name
)
GROUP BY tablename
请参阅demo。
【讨论】:
非常感谢。我对这个 sqlite 查询完全陌生,因为我一直在处理 ORM。以上是关于获取 SQLite 中 GROUP_CONCAT 的所有 id的主要内容,如果未能解决你的问题,请参考以下文章
查询中 group_concat 上的 SQLITE 不需要的行为
在 SQLite 的 GROUP_CONCAT 函数中使用 ORDER BY 子句
在 SQLite 中,多个列的排序方式是不是与 group_concat 相同?
group_concat 以及如何在 sqlite 中使用行号