您的位置:首页 > 数据库 > MySQL

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

2015-06-18 00:34 776 查看
如题,注意如下写法:

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`)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: