合并两个Mysql表中的记录

时间:2015-04-17 11:46:27

标签: mysql grouping

我有两张桌子:

记录

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

目标是选择不是子记录的记录

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

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的子记录

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

的不同值

任何帮助?

1 个答案:

答案 0 :(得分:0)

这很棘手,因为连接会产生一堆额外的行。将数据合并在一起的关键想法是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;

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