Удаление несвязанных записей

SN
На сайте с 04.07.2013
Offline
84
623

Есть таблица:

tags

------------

id tag

1 один

2 два

3 три

4 четыре

5 пять

есть связанные с ней таблицы:

articles

------------

id tags_id

1 1

2 1

3 3

и

images

------------

id tags_id

1 1

2 3

3 5

Как из таблицы tags удалить все не связанные записи (в данном случае 2 и 4)

Помогите построить запрос

Спасибо

V2
На сайте с 21.06.2013
Offline
47
#1

DELETE FROM `tags` WHERE `id` NOT IN( (SELECT `tags_id` FROM `articles` GROUP BY `tags_id`) UNION (SELECT `tags_id` FROM `images` GROUP BY `tags_id`));

Как-то так. На работоспособность не проверял, но на глаз должно работать.

S
На сайте с 23.05.2004
Offline
316
#2

Теоретически еще LEFT JOIN с COUNT() == 0 может сработать.

Хотя имхо легче всего скриптом в цикле пройтись и удалить мусор. Решение конечно не такое красивое как один запрос, но зато проще и и быстрее в реализации :)

Это просто подпись.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий