MySQL在主表上创建具有连续行的字段

时间:2018-03-03 04:24:20

标签: mysql sql

输入两个表格TABLE ATABLE B

 TABLE A       TABLE B
 A_ID |   A    A_ID |  B        
    1 |   a       1 |  b
    2 |  a1       1 | b1
    3 |  a2       2 | b2

期望输出TABLE C

 TABLE C
 A_ID |  A | C
    1 |  a | b,b1  <--- Concat all rows in TABLE B with ','
    2 | a1 | b2
    3 | a2 | NULL  <--- NULL if no matched A_ID in TABLE B

C列找到所有匹配的A_ID并将所有B行连接到新的TEXT字段。 这可以只用MySQL查询吗?

1 个答案:

答案 0 :(得分:1)

insert into TABLE_C 
SELECT 
      A1.A_ID, 
      A1.A, 
      GROUP_CONCAT(B1.B) as 'C'
    FROM `TABLE_A` A1 
    LEFT JOIN `TABLE_B` B1 
    ON A1.A_ID=B1.A_ID 
    GROUP BY A1.A_ID;

在sql上面的左连接有助于从两个表中得到公共匹配(相关)行&#39; TABLE_A&#39;和&#39; TABLE_B&#39; group by id有助于获取不匹配的行(彼此不相关,返回2,a1和3的结果集,null)。 group_concat绑定两列,默认情况下以逗号分隔。如果我们想要一些其他分隔符,那么我们只需要使用group_concat和separator语句。并且还插入select帮助以将结果行插入到新表格中&lt; TABLE_C&#39;当前需要在

上创建