【问题标题】:Get all ids of GROUP_CONCAT in SQLite获取 SQLite 中 GROUP_CONCAT 的所有 id
【发布时间】: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                     |

请帮我解决这个问题。

【问题讨论】:

    标签: sqlite group-concat


    【解决方案1】:

    您也应该在子查询中将GROUP_CONCAT() 用于ids:

    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。
    猜你喜欢
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多