需要帮助MySql查询

需要帮助MySql查询

问题描述:

我想从wp_usermetauser_id删除所有记录,其meta_value是“tonetone”这是垃圾邮件帐户。需要帮助MySql查询

如您所知,有许多记录user_idwp_usermeta。我试过这样但不起作用。感谢任何能向我展示道路的人。

All I want to do is delete all records with that user_id but the common value all I can get is "tonetone"

DELETE FROM wp_usermeta WHERE user_id = (SELECT user_id FROM wp_usermeta WHERE meta_value = "tonetone") 

+0

这会返回什么?数据库结构? Mysql错误?你在使用phpmyadmin吗? – Shoe 2011-03-24 17:25:08

+0

感谢您的评论。我使用phpmyadmin并得到了这个>>>#1093 - 您无法在FROM子句中指定目标表'wp_usermeta'进行更新 – Devyn 2011-03-24 17:31:26

+0

即使有人认为我处于毒品之下,您也必须应用我的建议。为了避免错误1093,你必须使用像我这样做的子查询。将正确的字段应用到您的特定表格 – 2011-03-24 17:36:36

如果要删除其中的任何记录用户具有tonetone作为meta_value的用户,你可以这样做:

CREATE TABLE wp_usermeta_users_to_delete
(USER_ID BIGINT(20)NOT NULL首要的关键 );
INSERT INTO wp_usermeta_users_to_delete
SELECT DISTINCT user_id FROM wp_usermeta
WHERE meta_value =“tonetone”;
DELETE A. * FROM wp_usermeta A INNER JOIN wp_usermeta_users_to_delete B USING(user_id);
DROP TABLE wp_usermeta_users_to_delete;

+0

等一下。我刚刚意识到,你想要删除在其任何记录中都有tonetone的userid。 BRB ... – RolandoMySQLDBA 2011-03-24 17:43:26

+0

是的Rolando,这是我想要做的。谢谢! – Devyn 2011-03-24 17:50:59

+0

我得到这个>>#1109 - MULTI DELETE中的未知表'wp_usermeta' – Devyn 2011-03-24 18:08:50

delete from wp_usermeta where umeta_id in (select * from (select umeta_id from wp_usermeta where meta_value = "tonetone") as t) 
+0

仍然没有运气@尼克。 – Devyn 2011-03-24 17:53:57

下面的查询会从表中删除wp_usermeta具有现场meta_value设置为tonetone所有记录

delete wp_usermeta 
    from wp_usermeta where meta_value = 'tonetone' 

UPDATE

在看到您更新的问题后,我很清楚您要做什么。以下查询将删除meta_value设置为'tonetone'的每个用户的所有记录。

DELETE wp_usermeta 
    FROM wp_usermeta T1 
INNER JOIN (SELECT DISTINCT user_id FROM wp_usermeta WHERE meta_value = 'tonetone') T2 ON T1.user_id = T2.user_id 
+0

谢谢Miky,但它不是我想要的。正如我所解释的,wp_usermeta中有多个具有相同user_id的记录。如果我运行这个sql,它只会在user_id的行上删除。 – Devyn 2011-03-24 17:32:54

+2

你究竟是什么意思?该查询将删除表w'_p_usermeta中具有meta_value ='tonetone'的所有记录。你有没有试过运行这个查询? – 2011-03-24 17:34:30

+0

我已经上传了图片,你可以看到,user_id有多个记录,meta_value =“tonetone”只是一行。我想要做的就是删除该user_id的所有行。 – Devyn 2011-03-24 17:43:14

你的错误:

#1093 - You can't specify target table 'wp_usermeta' for update in FROM clause 

如这里记载:MySQL Error 1093 - Can't specify target table for update in FROM clause你不能“修改您在SELECT部分​​使用相同的表”。下面应该工作:

DELETE FROM wp_usermeta WHERE meta_value = 'tonetone' 

或修正您的查询一点点:

DELETE FROM wp_usermeta WHERE user_id IN (SELECT user_id FROM wp_usermeta WHERE meta_value = "tonetone") 

但它没有任何意义。你基本上检查user_id的比较,而你真的想检查它的领域meta_value

检查第一个查询,并让我知道。

+0

你能看看我最近更新的图片吗?这会让你清楚地明白我想要做什么。 – Devyn 2011-03-24 17:45:55