EXISTS my_temp_table;
CREATE TEMPORARY TABLE my_temp_table SELECT comments.cid FROM comments, video WHERE comments.vid=video.vid AND comments.status=0 AND video.status IS NULL AND comments.author NOT IN (SELECT DISTINCT(author) FROM comments WHERE status!=0);
DELETE FROM comments WHERE cid IN (SELECT cid FROM my_temp_table);
оно очень долго удаляет, примерно по одной записе в секунду, а их там сотни тысяч. или как можно иначе решить эту задачу?
Я бы попробовал завести ещё один столбец to_delete - и заполнить его единицами, если комментарий нужно удалить. Потом по столбцу удалить. Сейчас идёт перебор всех id при каждом удалении, это долго
спасибо, интересная идея
не сработало, запрос: UPDATE comments, video SET comments.to_delete=1 WHERE comments.vid=video.vid AND comments.status=0 AND video.status IS NULL AND comments.author NOT IN (SELECT DISTINCT(author) FROM comments WHERE status!=0) так же выдаёт ошибку: #1093 - You can't specify target table 'comments' for update in FROM clause
через left join надо делать
ок спасибо, почитаю
Обсуждают сегодня