MySQL 如何在 MySQL 中删除除某些行之外的所有行?
在 MySQL 中删除除某些行之外的所有行有多种方法,本文将为大家介绍其中的两种方法。
阅读更多:MySQL 教程
方法一:使用 NOT IN 子句
NOT IN 子句用于筛选除指定值之外的所有值,我们可以利用这个特性来删除除指定行之外的所有行。
下面是一个示例,假设我们有一张名为 students 的表,其中包含 name 和 id 两列,其中 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 中删除除某些行之外的所有行的方法。这两种方法均可行,选择哪一种取决于具体情况。希望这篇文章能对你有所帮助!
极客笔记