得到这个:MySQL的选择更新
Table a
ID RelatedBs
1 NULL
2 NULL
Table b
AID ID
1 1
1 2
1 3
2 4
2 5
2 6
需要一个表有一个逗号分隔的列表如表B中给出。然后,B表将变得过时:
Table a
ID RelatedBs
1 1,2,3
2 4,5,6
这确实通过所有记录不RUND,只是广告一个“B”到“表”
UPDATE a, b
SET relatedbs = CONCAT(relatedbs,',',b.id)
WHERE a.id = b.aid
更新:谢谢,3个正确答案(标记为最老的答案)! GROUP_CONCAT是一个使用。无需在使用relatedids = = CONCAT(relatedids,',',next_id)的ID之间插入逗号,这是由GROUP_CONCAT自动完成的。
说实话,这可能是您管理数据库的一种糟糕的选择。不是说你不能这样做,但外键的想法是做你所拥有的,而不是你想要做的。 你的动机是什么?如果您需要获取'RelatedBs'并在SQL中使用它们,那么您的查询将显得更加复杂。 – 2010-03-23 11:16:42
确实如此。但是,当它是一对多关系时,我仍然经常使用逗号分隔的ID。当它是一个多关系时,我总是用一个毫米表来处理关系。 – Tillebeck 2010-03-24 07:12:11