Mysql DELETE删除除了最新的1000条记录的写法

来源:互联网 发布:生辰八字起名软件2017 编辑:程序博客网 时间:2024/06/14 01:16

如题,注意如下写法:

DELETE t1 FROM `wp_posts` AS t1 WHERE ID IN(SELECT ID FROM `wp_posts` WHERE ID < (SELECT ID FROM `wp_posts` ORDER BY ID DESC LIMIT 1 )-1000)

会提示错误

MYSQL Error Code: 1093 You can't specify target table 't1 for update in FROM clause

意为,你不能在查询某一个表的同时更改它。


因此,简单的写法:

DELETE  FROM `wp_posts`   WHERE ID < (SELECT MAX(ID) FROM `wp_posts`)-1000

这里使用了MAX函数。


同时记一条选出任意天数之外的记录


SELECT `post_date` FROM `wp_posts` WHERE TO_DAYS(NOW()) - TO_DAYS(`post_date`) > 30


同时删除已删除文章的属性,

DELETE FROM `wp_postmeta` WHERE `wp_postmeta`.`post_id` NOT IN (SELECT `wp_posts`.`ID` FROM `wp_posts`)

0 0
原创粉丝点击