Rin
*
Как удалить записи из таблицы `t1`, на которые не ссылаются записи из таблицы `t2`?
Нужно удалить записи из таблицы `t1`, на которые не ссылаются записи из таблицы `t2` по полю `id`. Связь "многое к одному" (`t2`.`id`->`t1`.`id`).
Все таблицы в innoDB, версия mySQL 4.0.18.
Ниже решение в 3 запроса. Возможно это сделать через многотабличное удаление одним запросом?
[SQL]
SET @a := "0";
SELECT @a := CONCAT_WS( ",", @a , `t1`.`id`)
FROM `t1`
LEFT JOIN `t2`
ON (`t1`.`id` = `t2`.`id`)
WHERE `t2`.`id` IS NULL;
DELETE FROM `t1`
WHERE FIND_IN_SET( `id`, @a);
[/SQL]
-~{}~ 07.01.05 19:40:
Разобрался с синтаксисом многотабличного удаления.
Все оказывается очень просто:
[SQL]
DELETE `t1`
FROM `t1` LEFT JOIN `t2`
ON (`t1`.`id` = `t2`.`id`)
WHERE `t2`.`id` IS NULL;
[/SQL]
Нужно удалить записи из таблицы `t1`, на которые не ссылаются записи из таблицы `t2` по полю `id`. Связь "многое к одному" (`t2`.`id`->`t1`.`id`).
Все таблицы в innoDB, версия mySQL 4.0.18.
Ниже решение в 3 запроса. Возможно это сделать через многотабличное удаление одним запросом?
[SQL]
SET @a := "0";
SELECT @a := CONCAT_WS( ",", @a , `t1`.`id`)
FROM `t1`
LEFT JOIN `t2`
ON (`t1`.`id` = `t2`.`id`)
WHERE `t2`.`id` IS NULL;
DELETE FROM `t1`
WHERE FIND_IN_SET( `id`, @a);
[/SQL]
-~{}~ 07.01.05 19:40:
Разобрался с синтаксисом многотабличного удаления.
Все оказывается очень просто:
[SQL]
DELETE `t1`
FROM `t1` LEFT JOIN `t2`
ON (`t1`.`id` = `t2`.`id`)
WHERE `t2`.`id` IS NULL;
[/SQL]