Недавно мой веб-сайт joomla 1.5 стал объектом регистрации спама, поэтому я пошел в phpmyadmin и начал фильтровать и удалять эти регистрации из jos_users, но я полностью забыл, что у регистрации joomla есть еще 2 зависимости таблиц (jos_core_acl_groups_aro_map и jos_core_acl_aro), так что теперь у меня есть jos_users с 90 000 строк и 2 других таблицы зависимостей с 120 000 строк.
Я нашел эту команду SQL для заполнения 3 таблиц:
insert into jos_core_acl_aro (section_value, value, name)
select 'users', id, name from jos_users;
Но я счел это слишком рискованным для использования на действующем сайте с 120 000 регистраций, а также он восстановит спам-регистрации, которые я уже удалил в jos_users
Мне нужна команда SQL для сравнения таблицы jos_users с двумя другими таблицами и отображения отсутствующих строк в jos_core_acl_groups_aro_map и jos_core_acl_aro, которые я удалил из jos_users.
Я пробовал эту команду:
select *
from tcpt_users
where tcpt_users.id not in (select tcpt_core_acl_groups_aro_map.aro_id
from tcpt_core_acl_groups_aro_map)
Но это не работает, и это заставляет MySQL кричать о памяти, и мой сервер падает.
Некоторые указания будут в основном приветствоваться.
Редактировать
Хорошо, у меня есть концепция псевдонима, которой вы поделились, поэтому я выполнил следующую команду:
select *
from tcpt_users a
left join tcpt_core_acl_aro b on a.id = b.value
where b.value is null
Но все же сводит с ума сервер mysql, который с самого начала влияет на нагрузку на мой сервер, поскольку команда хорошо отформатирована, и у меня могут быть некоторые ограничения на сервере. Есть ли способ ограничить число отображаемых строк?
Редактировать 1 : Я думаю, что я понял, предел строк, и это то, что я запустил:
select *
from tcpt_users a
left join tcpt_core_acl_aro b on a.id = b.value
where b.value is null
LIMIT 25
Это происходит так же, как и я, чтобы перезапустить MySQL, потому что запрос будет длиться вечно, и мой сервер зависает.
В данный момент у меня нет выбора, и я могу прямо сейчас помочь.