Перейти к контенту
  • 0

Очистка БД от лишних сообщений


arietz

Вопрос

Производил массовую очистку форумов. Удалял темы через "массовое удаление/перемещение". Все бы хорошо, темы удалены, но все сообщения остались в базе. Как от них избавиться?
Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Сначала получаем массив айдишников топиков:

SELECT tid FROM ibf_topics LIMIT 0, 1000000

Это можно сделать в пхпадмине, копипастнуть результат в ворда; там сделать автозамену символов абзаца на запятую, чтобы в итоге получить строку: список цифр через запятую.

Затем эту строку подставить в запрос:

DELETE FROM ibf_posts WHERE topic_id NOT IN(список)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Это можно сделать в пхпадмине, копипастнуть результат в ворда; там сделать автозамену символов абзаца на запятую

 

select concat(tid,',') from ibf_topics

Ссылка на комментарий
Поделиться на других сайтах

  • 0
select concat(tid,',') from ibf_topics

 

Ага, спасибо!

Если база небольшая,это позволит выполнить поиск в одно действие:

SELECT * FROM ibf_posts WHERE topic_id NOT IN(select concat(tid,',') from ibf_topics)

 

Само же по себе не избавляет от обработки результатов в текстовом редакторе, concat не делает единой строки, а лишь добавляет символы к к какждой строке в массиве строк.

 

Нет ли в sql чего-то типа implode(",",tid) ?

Изменено пользователем FatCat
Ссылка на комментарий
Поделиться на других сайтах

  • 0

:D

 

да нет, для вложенного запроса запятая не нужна

SELECT * FROM ibf_posts WHERE topic_id NOT IN (select tid from ibf_topics)

 

запятая нужна именно как раз если будешь результат запроса копипастить и вставлять в IN запроса вручную.

 

Само же по себе не избавляет от обработки результатов в текстовом редакторе, concat не делает единой строки, а лишь добавляет символы к к какждой строке в массиве строк.

а зачем обрабатывать? Точнее что именно ты собираешься обрабатывать в редакторе?

Просто получаешь ответ и копипастишь. Или я что-то не понял?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Пхпадмин все равно добавляет свои строки то ли каждые 500, то ли 1000.

Да и просто неэстетично смотрится столбец в несколько тысяч строк... В строку через запятую с пробелом намного эстетичней. :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Пхпадмин все равно добавляет свои строки то ли каждые 500, то ли 1000.

А чего он добавляет?

Или можно выполнить из админки форума.

 

Да и просто неэстетично смотрится столбец в несколько тысяч строк... В строку через запятую с пробелом намного эстетичней.

ну мне например будет лучше большим столбиком чем делать какие-то телодвижения с обработкой в редакторе.

На результате запроса столбик никак не скажется и в байтах его объём займёт столько же места сколько и твой в строчку :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А чего он добавляет?

Или можно выполнить из админки форума.

Строчку меню с именами полей добавляет.

Админка вообще бьет на страницы. Хотя...

select concat(tid,',') from ibf_topics LIMIT 0, 1000000

- работает как надо!

Спасибо! В самом деле так можно без последующего редактирования результатов.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.