在 SQLite 中获取 GROUP_CONCAT 的所有 ID
Get all ids of GROUP_CONCAT in SQLite
Table 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,正如您在 table 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 |
请帮我解决这个问题。
您还应该对子查询中的 id
使用 GROUP_CONCAT()
:
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。
Table 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,正如您在 table 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 |
请帮我解决这个问题。
您还应该对子查询中的 id
使用 GROUP_CONCAT()
:
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。