Могу ли я иметь все строки, используя группу в sqlite? - PullRequest
0 голосов
/ 20 марта 2020

Это пример, таблица, подобная этой:

ID  NAME       CATEGORY 
1   vue        javascript
2   django     python
3   node       javascript
4   flask      python

возможно ли получить групповые результаты, подобные этой?

[
 [{id: 1, name: vue, category: javascript}, {id: 3, name: node, category:javascript}],
 [{id: 2, name: django, category: python}, {id: 4, name: flask, category: python}]
]

Я пытался использовать group by(category) и group_concat(), но результат выглядит так:

[
{'id': xxx, name: xxx, category: javascript}, {'id': xxx, name: xxx, category: python}
]

Каждая категория просто возвращает одни данные, а не группу, которую я хочу.

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Это очень похоже на JSON минус кавычки, которые я должен предположить, что это то, что вы хотели. Введите расширение JSON1 :

WITH groups AS
 (SELECT json_group_array(json_object('id', id, 'name', name, 'category', category)) AS grp
  FROM example
  GROUP BY category)
SELECT json_group_array(grp) FROM groups;

, которое возвращает (после симпатичной печати)

[
  [
    {
      "id": 1,
      "name": "vue",
      "category": "javascript"
    },
    {
      "id": 3,
      "name": "node",
      "category": "javascript"
    }
  ],
  [
    {
      "id": 2,
      "name": "django",
      "category": "python"
    },
    {
      "id": 4,
      "name": "flask",
      "category": "python"
    }
  ]
]

Если вы не хотите использовать двойные кавычки, удалите их тривиально делать то, что использует результаты.

0 голосов
/ 20 марта 2020

Я думаю, что вы хотите это:

select 
  group_concat('{id: ' || id || ', name: ' || name || ', category: ' || category || '}') col
from tablename  
group by category

См. Демоверсию . Результаты:

| col                                                                                |
| ---------------------------------------------------------------------------------- |
| {id: 1, name: vue, category: javascript},{id: 3, name: node, category: javascript} |
| {id: 2, name: django, category: python},{id: 4, name: flask, category: python}     |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...