SQLite Group_Concat выберите с «особыми потребностями»

StackOverflow https://stackoverflow.com/questions/1902454

Вопрос

Я знаю, как использовать 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 из группы Table By F1

 result:
 2 -  1 - a,b - NULL
 4 -  2 - c,d - NULL

Как видите, 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?

Спасибо

Это было полезно?

Решение

Не уверен, почему вы этого хотите, но здесь идет:

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
;

Другие советы

Используйте встроенный оператор SQL

select id, f1, f2, (select group_concat(f2) from t t2 where t2.f1 = t1.f1)
from t t1
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top