MySQL更新了多对多表关系

时间:2011-02-23 11:44:35

标签: mysql many-to-many

我有表A和B以及A_has_B,其中包含以下字段:

A:id,name

B:id,name

A_has_B:a_id,b_id,背景

以前当我在A_has_B中没有“背景”字段时,我通过删除A_has_B中的所有记录进行更新并重新插入更新的记录。

但是现在如何更新A_has_B whitout删除应重新插入的记录?

2 个答案:

答案 0 :(得分:1)

听起来你只需要

update A_has_B
set background = ???
where a_id = ??? and b_id = ???

你必须填写缺失的部分。

答案 1 :(得分:1)

在我的脑海中,我会想到像......

DELETE FROM a_has_b
WHERE NOT EXISTS (
  SELECT 1 FROM b
  WHERE b.id=a_has_b.b_id
);

(和表'a'类似)

DELETE FROM a_has_b
WHERE b.id <> ANY (SELECT id FROM b);