需要帮助MySql查询
我想从wp_usermeta
与user_id
删除所有记录,其meta_value
是“tonetone”这是垃圾邮件帐户。需要帮助MySql查询
如您所知,有许多记录user_id
在wp_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")
如果要删除其中的任何记录用户具有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;
等一下。我刚刚意识到,你想要删除在其任何记录中都有tonetone的userid。 BRB ... – RolandoMySQLDBA 2011-03-24 17:43:26
是的Rolando,这是我想要做的。谢谢! – Devyn 2011-03-24 17:50:59
我得到这个>>#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)
仍然没有运气@尼克。 – 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
谢谢Miky,但它不是我想要的。正如我所解释的,wp_usermeta中有多个具有相同user_id的记录。如果我运行这个sql,它只会在user_id的行上删除。 – Devyn 2011-03-24 17:32:54
你究竟是什么意思?该查询将删除表w'_p_usermeta中具有meta_value ='tonetone'的所有记录。你有没有试过运行这个查询? – 2011-03-24 17:34:30
我已经上传了图片,你可以看到,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
。
检查第一个查询,并让我知道。
你能看看我最近更新的图片吗?这会让你清楚地明白我想要做什么。 – Devyn 2011-03-24 17:45:55
这会返回什么?数据库结构? Mysql错误?你在使用phpmyadmin吗? – Shoe 2011-03-24 17:25:08
感谢您的评论。我使用phpmyadmin并得到了这个>>>#1093 - 您无法在FROM子句中指定目标表'wp_usermeta'进行更新 – Devyn 2011-03-24 17:31:26
即使有人认为我处于毒品之下,您也必须应用我的建议。为了避免错误1093,你必须使用像我这样做的子查询。将正确的字段应用到您的特定表格 – 2011-03-24 17:36:36