2011-03-24 177 views
1

我想從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

回答

1

如果要刪除其中的任何記錄用戶具有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

1
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

0

下面的查詢會從表中刪除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

0

你的錯誤:

#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