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

问题描述 投票:0回答:3

输入两个表,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查询吗?

mysql sql
3个回答
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左连接有助于从两个表'TABLE_A'和'TABLE_B'获取公共匹配(相关)行,并且按ID分组有助于获取不匹配的行(彼此不相关,返回结果集)对于2,a1和3,null)。 group_concat绑定两列,默认情况下以逗号分隔。如果我们想要一些其他分隔符,那么我们只需要使用group_concat和separator语句。并且插入select帮助将结果行插入到新表'TABLE_C'中,该表必须在之前创建


0
投票

使用GROUP_CONCAT()函数试试这个。

SELECT 
  tbla.A_ID, 
  tbla.A, 
  GROUP_CONCAT(tblb.B) 
FROM `TABLE A` tbla 
LEFT JOIN `TABLE B` tblb 
ON tbla.A_ID=tblb.A_ID 
GROUP BY tbla.A_ID;

0
投票

使用group_contact聚合表B中表B中的B列值。可以使用INSERT .. SELECT将值插入表C.

insert into tablec 
select a.a_id, a.a, group_concat(b separator ',') 
from tablea a 
left join tableb b on (a.a_id = b.a_id) 
group by a.a_id, a.a;           
© www.soinside.com 2019 - 2024. All rights reserved.