我需要编写一个SQL脚本来删除WordPress数据库中没有与之关联的帖子的用户。我做了一些搜索之后尝试了这个脚本:
DELETE FROM wp_users WHERE ID NOT IN (SELECT DISTINCT post_author FROM wp_105_posts)
但删除了所有用户。有人能让我知道我做错了吗?
答案 0 :(得分:1)
似乎没有任何用户发帖,或wp_105_posts.post_author
没有链接到wp_users.ID
。您确定wp_105_posts.post_author
是wp_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