2011-04-15 59 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;