Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để xóa tất cả các hàng ngoại trừ một số hàng trong MySQL?

Bạn có thể sử dụng toán tử NOT IN cho các hàng bạn không muốn xóa. Sau đây là cú pháp -

delete from yourTableName where yourColumnName NOT
IN(‘yourValue1’,‘yourValue2’,‘yourValue3’,.........N);

Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table deleteAllRowsWithCondition
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> Name varchar(20)
   -> );
Query OK, 0 rows affected (0.84 sec)

Sau đây là truy vấn để chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert -

mysql> insert into deleteAllRowsWithCondition(Name) values('Larry');
Query OK, 1 row affected (0.14 sec)

mysql> insert into deleteAllRowsWithCondition(Name) values('John');
Query OK, 1 row affected (0.21 sec)

mysql> insert into deleteAllRowsWithCondition(Name) values('Sam');
Query OK, 1 row affected (0.12 sec)

mysql> insert into deleteAllRowsWithCondition(Name) values('Mike');
Query OK, 1 row affected (0.16 sec)

mysql> insert into deleteAllRowsWithCondition(Name) values('Carol');
Query OK, 1 row affected (0.14 sec)

mysql> insert into deleteAllRowsWithCondition(Name) values('Bob');
Query OK, 1 row affected (0.06 sec)

mysql> insert into deleteAllRowsWithCondition(Name) values('David');
Query OK, 1 row affected (0.14 sec)

Sau đây là truy vấn để hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select -

mysql> select * from deleteAllRowsWithCondition;

Điều này sẽ tạo ra kết quả sau -

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Larry |
| 2  | John  |
| 3  | Sam   |
| 4  | Mike  |
| 5  | Carol |
| 6  | Bob   |
| 7  | David |
+----+-------+
7 rows in set (0.00 sec)

Đây là truy vấn để xóa tất cả các hàng với một số điều kiện. Chúng tôi không xóa 'John', 'Mike' và 'Carol' ở đây -

mysql> delete from deleteAllRowsWithCondition where Name NOT IN('John','Mike','Carol');
Query OK, 4 rows affected (0.15 sec)

Hãy để chúng tôi kiểm tra xem một số hàng đã bị xóa khỏi bảng hay chưa. Sau đây là truy vấn -

mysql> select * from deleteAllRowsWithCondition;

Điều này sẽ tạo ra kết quả sau -

+----+-------+
| Id | Name  |
+----+-------+
| 2  | John  |
| 4  | Mike  |
| 5  | Carol |
+----+-------+
3 rows in set (0.00 sec)