首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用mysql删除前十个表记录?

问如何使用mysql删除前十个表记录?
EN

Database Administration用户
提问于 2013-03-26 12:40:50
回答 1查看 250关注 0票数 0

我目前正在使用php和mysql。我想尝试的是,如果我有10条数据库的“稳定”记录,而在同一个.php文件中,我有一些文本框以便输入,那么我输入的内容将被保存到数据库中,但是每次我进入该页面时,只有10条记录将被删除和重新创建,而我输入的记录不会被删除。有可能吗?我知道听起来很奇怪,但我正在读这本书,而且有这样的任务。嗯,任务没有明确提到是否应该全部删除,或者仅仅是十个“稳定”的记录。

我在这里说得不太清楚吗?

有相当多的脚本,我已经做了,所以我没有粘贴在这里的代码,并想知道我是否可以先得到一个概念。

EN

回答 1

Database Administration用户

发布于 2013-03-26 14:13:01

我能理解你说的“稳定”。MySQL中没有明确的机制来隐式地控制MySQL可以使用LIMIT删除行的顺序。实际上,MySQL复制并不是事务安全的。

确保有序删除行的唯一方法是通过不依赖auto_increment列的主键或唯一键进行删除。

稳定删除

示例

假设您想要删除公司表中的前10名员工(裁员确实会造成伤害,这只是一个例子)

代码语言:javascript
复制
CREATE TABLE emp
(
    id INT NOT NULL AUTO_INCREMENT,
    empid INT NOT NULL,
    ...
    PRIMARY KEY (id),
    UNIQUE KEY (empid)
);

您可以安全地删除这10名员工如下:

代码语言:javascript
复制
CREATE TABLE empids_to_delete
SELECT empid FROM emp ORDER BY empid LIMIT 10;
ALTER TABLE empids_to_delete ADD PRIMARY KEY (empid);
DELETE B.* FROM empids_to_delete A INNER JOIN emp B USING (empid);
DROP TABLE empids_to_delete;

只要您在此表之外创建empid,这将是很棒的。这不会给复制奴隶带来问题,即使母版上的auto_increment序列与奴隶的完全不同。

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/37580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档