Удалить пользователей без сообщений в WordPress с помощью SQL-запроса - PullRequest
1 голос
/ 16 ноября 2011

Мне нужно написать сценарий SQL для удаления пользователей, у которых нет записей, связанных с ними в базе данных WordPress.Я попробовал этот скрипт после некоторого поиска:

DELETE FROM wp_users WHERE ID NOT IN (SELECT DISTINCT post_author FROM wp_105_posts)

, но это удалило всех пользователей.Может кто-нибудь сообщить мне, что я делаю не так, пожалуйста?

1 Ответ

1 голос
/ 16 ноября 2011

Похоже, что ни один из пользователей не сделал сообщения, или wp_105_posts.post_author не ссылается на wp_users.ID. Вы уверены, что wp_105_posts.post_author является внешним ключом wp_users.ID?

wp_105_posts должен иметь один столбец, который ссылается на who пользователя в таблице wp_users. Поскольку ваш первичный ключ GUID для wp_users равен ID, это должен быть один столбец, который вы используете для ссылки на пользователя из ваших таблиц записей. Вот небольшой пример:

user_table
ID | имя | возраст | электронная почта | и т.д.
1 | ник | 24 | nick@com.com | ..
2 | боб | 30 | bob@com.com | ...
3 | подать в суд | 35 | sue@com.com | ...

a_post_table
ID (ID сообщения) | User_ID (идентификатор пользователя) | название | дата | корпус
........ 1 .............. | ... 1 (сообщение от Ника) ........ | помощь | 1/1/11 1033 * ........ 2 .............. | ... 1 (сообщение от Ника) ........ | помощь | 3/2/11 1034 * ........ 3 .............. | ... 2 (сообщение от bob) ........ | помощь | 5/6/11 1035 *

Как видите, таблица записей знает все об авторе, просто удерживая его идентификатор. Вы можете использовать запрос на соединение, чтобы получить всю информацию о пользователе из таблицы сообщений, просто зная его идентификатор. Используя этот запрос сейчас

DELETE FROM user_table
WHERE ID NOT IN
(SELECT DISTINCT User_ID FROM a_post_table)

Удалит только Сью и Сью, учитывая данные выше.
НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...