MySQL обновляет отношение «многие ко многим» - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть таблицы A и B и A_has_B, где есть эти поля:

A: идентификатор, имя

B: идентификатор, имя

A_has_B: a_id, b_id, background

Ранее, когда у меня не было 'фонового' поля в A_has_B, я обновлял, удаляя все записи в A_has_B и повторно вставляя обновленные записи.

но как теперь я могу обновить A_has_B, удаляя записи, которые следует переустановить?

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Вне моей головы, я бы подумал что-то вроде ....

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);
1 голос
/ 23 февраля 2011

Похоже, вам просто нужно

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

Вам нужно будет заполнить пропущенные биты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...