2011-04-15 25 views
0

這個選擇在我看來完美...任何建議?刪除0個視圖的wordpress帖子[wp_postviews插件]

SELECT * 
FROM `wp_posts` , `wp_postmeta` 
WHERE `post_type` = 'post' 
AND post_id = ID 
AND DATEDIFF(NOW() , `post_date`) >400 
AND meta_key = "views" 
AND meta_value =0; 

問題是我不知道我該怎麼做DELETE刪除所有這些帖子!任何幫助? 感謝

回答

1

[編輯評論之後 - 沒有測試過,所以可能不是100%正確]

create table post_ids_to_remove (postid bigint); 

insert into post_ids_to_remove (postid) values (
    SELECT post_id 
     FROM `wp_posts` , `wp_postmeta` 
     WHERE `post_type` = 'post' 
     AND post_id = ID 
     AND DATEDIFF(NOW() , `post_date`) >400 
     AND meta_key = "views" 
     AND meta_value =0 
) 

delete from `wp_postmeta` where post_id in(
     SELECT postid 
     FROM `post_ids_to_remove` 
); 

delete from `wp_posts` where id in(
     SELECT postid 
     FROM `post_ids_to_remove` 
); 

drop table post_ids_to_remove; 
+0

我有一個問題!我如何執行第二個查詢,如果我刪除第一個wp_postmeta? – 2011-04-15 13:55:09

+0

hm,true ...可能您需要爲此創建臨時表... – Fortega 2011-04-15 14:41:15

+0

如何創建臨時表? – 2011-04-15 16:38:18

0
INSERT into post_ids_to_remove (postid) 

SELECT ID FROM wp_posts , wp_postmeta WHERE wp_posts.post_type = 'post' AND wp_postmeta.post_id = ID AND wp_postmeta.meta_key = 'views' AND wp_postmeta.meta_value = 0; 

DELETE from `wp_postmeta` where post_id in(
      SELECT postid 
      FROM `post_ids_to_remove` 
    ); 

DELETE from `wp_posts` where id in(
      SELECT postid 
      FROM `post_ids_to_remove` 
    ); 

DROP table post_ids_to_remove;