我有表A和B,有多对一的关联(b包含fk_a)。我们假设样本表如下:
A:
id first
1 sample
2 sample
B:
id fk_a type value
1 1 som thing
2 1 oth other
3 2 som thing
4 2 oth any
我希望表A中的“第一”列是唯一的,我希望通过以下方式实现它:
期望的A:
id first
1 sample-thing-other
2 sample-thing-any
是否可以使用纯MYSQL在表A上使用UPDATE和CONCAT来获得所需的更新?
如果我把所有东西都放在一张桌子里就可以轻松了,我可以写一下
UPDATE A
SET first = CONCAT(first, value)
但不幸的是,我有多对一的关联,我不确定在这种情况下是否有可能。
答案 0 :(得分:1)
Group_Concat是你的朋友。
但是我可以提醒你第一次正常吗?
答案 1 :(得分:1)
我没有mysql的实例,也没有测试它。使用group_concat
UPDATE A, (SELECT fk_a, GROUP_CONCAT(value SEPARATOR '-') as concat_value FROM B GROUP BY fk_a) AS t
SET A.first = CONCAT(A.first, '-', t.concat_value)
WHERE A.id = t.fk_a;