mysql delete limit的问题

我建了下面这张表

CREATE TABLE `backup` (
  `id` int(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `userid` varchar(20) NOT NULL COMMENT '用户ID',
  `hello` mediumtext NOT NULL COMMENT '保存的内容',
  `times` datetime NOT NULL COMMENT '操作时间',
  PRIMARY KEY (`id`),
  KEY `backup_userid` (`userid`) COMMENT '用户ID'
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;

说明
1.每个userid会有多条备份记录
2.对表的操作有
A:追加新的备份记录
B:删除一个用户早期的备份记录,只留下最新的5条
C:一些查询操作

请问我使用

delete from backup where userid=xxxx limit 2;

这条语句永远都只会删除用户xxxx的最早2条记录吗(删除前已经确定了xxxx的记录数是大于2条的)?

根据socrates 的回答mysql存储记录的顺序和自增ID的顺序并不一定是一致的,那么,当执行上面的delete 语句的时候,是按存储的顺序删除还是按自增ID的顺序?

阅读 7.3k
1 个回答

这个是不能肯定,mysql不能保证存储的顺序和自增id是一致的,还是对顺序做一下限定

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题