удаление строк, для которых нет связи

berkut

Новичок
удаление строк, для которых нет связи

Есть 2 таблицы, в первой id - автоинкремент, во второй product_id - "внешний ключ" из первой таблицы. Как можно удалить строки из первой таблицы, для которых нет product_id во второй таблице?
 

ForJest

- свежая кровь
[sql]
SELECT id FROM t1 LEFT JOIN t2 ON t1.id = t2.product_id
WHERE t2.product_id IS NULL
[/sql]
Получаем id, предположим в массив $ids.
PHP:
$ids_list = implode(', ', $ids);
$query = "DELETE FROM t1 WHERE id IN ($ids)";
-~{}~ 05.09.05 15:22:

А вообще - зависит от версии :).
 

chira

Новичок
для MySQL >= 4.0
Код:
DELETE a 
FROM table1 a
  LEFT JOIN table2 b ON a.id=b.product_id
WHERE b.product_id IS NULL
 

MuXa247

Новичок
Автор оригинала: chira
для MySQL >= 4.0
Код:
DELETE a 
FROM table1 a
  LEFT JOIN table2 b ON a.id=b.product_id
WHERE b.product_id IS NULL
Возник вопрос: Выигрыш в скорости от вложенного запроса, у данного варианта есть?
 
Сверху