使用SQL查询删除WordPress中没有帖子的用户

时间:2011-11-16 17:15:55

标签: mysql sql

我需要编写一个SQL脚本来删除WordPress数据库中没有与之关联的帖子的用户。我做了一些搜索之后尝试了这个脚本:

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

但删除了所有用户。有人能让我知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

似乎没有任何用户发帖,或wp_105_posts.post_author没有链接到wp_users.ID。您确定wp_105_posts.post_authorwp_users.ID的外键吗?

wp_105_posts应该有一个列,该列引用用户wp_users表中。由于wp_users的GUID主键为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(用户ID)|标题|日期|体
........ 1 .............. | ... 1(由尼克发布)........ |帮助| 1/1/11
........ 2 .............. | ... 1(由尼克发布)........ |帮助| 11年3月2日
........ 3 .............. | ... 2(由鲍勃发布)........ |帮助| 11年5月6日

正如您所看到的,post表只需保存ID即可了解作者的所有信息。您只需知道其ID,就可以使用连接查询从post表中获取所有用户信息。立即使用此查询

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

根据上述数据,将删除Sue和Sue HTH