合并来自两个 Mysql 表的记录

Combining records from two Mysql tables

我有两个表:

记录

id  subrecord_of
1   0
2   1
3   0
4   1
5   0
6   5

   id   value
    1   11
    1   111
    2   222
    2   222
    2   2222
    3   33
    4   44
    6   66
    6   666

目标是 select 记录不是子记录

来自记录和子记录的值的相应总和:

id  sub    sum_of_values
1   2,4     11,111,2222,222,44
3   null    33
5   6       666,66

列"id" - sub 为 0 的记录

列 "sub" - 子记录列表 fe id 2 和 id 4 是 id 1

的子记录

列 "values" - 唯一值列表 fe id 1 = 来自 id1 + id2 + id4

的不同值

有什么帮助吗?

这很棘手,因为连接会生成一堆额外的行。将数据结合在一起的关键思想是 group_concat()group by.

以下将起作用:

select r.id,
       group_concat(distinct rs.id) as sub,
       group_concat(distinct v.value) as values
from records r left join
     records rs
     on rs.subrecordof = r.id left join
     values v
     on v.id in (r.id, rs.id)
where r.subrecordof = 0
group by r.id;

性能不会特别好。因此,该解决方案应该适用于小型数据集。它可能不适用于大型数据集。