0

我有具有多对一关联的表 A 和 B(b 包含 fk_a)。假设样本表如下:

A:

id first 
1  sample
2  sample

乙:

id fk_a  type value
1  1      som  thing
2  1      oth  other
3  2      som  thing
4  2      oth  any

我希望表 A 中的“第一”列是唯一的,并且我希望通过以下方式实现它:

想要的答:

id first 
1  sample-thing-other
2  sample-thing-any

是否可以使用纯 MYSQL 在表 A 上使用 UPDATE 和 CONCAT 来获得所需的更新?

如果我把所有东西都放在一张桌子上会很容易,我可以写

UPDATE A 
SET first = CONCAT(first, value)

但不幸的是,我有多对一的关联,我不确定在这种情况下是否有可能。

4

2 回答 2

1

Group_Concat是您的朋友。

但是我可以提醒你第一范式吗?

于 2012-04-10T10:52:25.433 回答
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;
于 2012-04-10T11:17:09.267 回答