MySQL 如何在 MySQL 中删除除某些行之外的所有行?

MySQL 如何在 MySQL 中删除除某些行之外的所有行?

MySQL 中删除除某些行之外的所有行有多种方法,本文将为大家介绍其中的两种方法。

阅读更多:MySQL 教程

方法一:使用 NOT IN 子句

NOT IN 子句用于筛选除指定值之外的所有值,我们可以利用这个特性来删除除指定行之外的所有行。

下面是一个示例,假设我们有一张名为 students 的表,其中包含 nameid 两列,其中 id 是主键:

CREATE TABLE students (
  id INT(10) PRIMARY KEY,
  name VARCHAR(255)
);

INSERT INTO students (id, name) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie'),
(4, 'David'),
(5, 'Eve');

如果我们要删除除 id 为 1 和 2 的行之外的所有行,可以使用以下代码:

DELETE FROM students
WHERE id NOT IN (1, 2);

这个代码会删除 id 为 3、4 和 5 的行,因为它们的 id 值不在 (1, 2) 中。

方法二:使用临时表

另一种方法是创建一个临时表,将要删除的行存入其中,然后通过关联查询删除不在该表中的所有行。

下面是一个示例,假设我们要删除除 id 为 1 和 2 的行之外的所有行,可以使用以下代码:

CREATE TEMPORARY TABLE temp_id (
  id INT(10) PRIMARY KEY
);

INSERT INTO temp_id (id) VALUES (1), (2);

DELETE students
FROM students
LEFT JOIN temp_id ON students.id = temp_id.id
WHERE temp_id.id IS NULL;

这个代码会删除 id 为 3、4 和 5 的行,因为它们不在临时表 temp_id 中。

结论

以上是两种在 MySQL 中删除除某些行之外的所有行的方法。这两种方法均可行,选择哪一种取决于具体情况。希望这篇文章能对你有所帮助!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程