Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

DELETE từ bảng MySQL WHERE cột = giá trị VÀ cột2 = giá trị2?

Xóa bản ghi với nhiều điều kiện (AND) trong MySQL

Sử dụng mệnh đề WHERE với toán tử AND để chỉ định nhiều điều kiện cùng lúc khi xóa bản ghi.

Ví dụ minh họa

Tạo bảng DemoTable722:

mysql> CREATE TABLE DemoTable722 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(100),
    StudentAge INT
);
Query OK, 0 rows affected (1.84 sec)

Chèn dữ liệu:

mysql> INSERT INTO DemoTable722(StudentName,StudentAge) VALUES('Chris Brown',23);
Query OK, 1 row affected (0.24 sec)
mysql> INSERT INTO DemoTable722(StudentName,StudentAge) VALUES('John Smith',21);
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable722(StudentName,StudentAge) VALUES('David Miller',22);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable722(StudentName,StudentAge) VALUES('Adam Smith',20);
Query OK, 1 row affected (0.24 sec)
mysql> INSERT INTO DemoTable722(StudentName,StudentAge) VALUES('Carol Taylor',24);
Query OK, 1 row affected (0.39 sec)

Xem dữ liệu:

mysql> SELECT * FROM DemoTable722;
+-----------+--------------+------------+
| StudentId | StudentName  | StudentAge |
+-----------+--------------+------------+
| 1         | Chris Brown  | 23         |
| 2         | John Smith   | 21         |
| 3         | David Miller | 22         |
| 4         | Adam Smith   | 20         |
| 5         | Carol Taylor | 24         |
+-----------+------------+------------+
5 rows in set (0.00 sec)

Xóa bản ghi thỏa mãn CẢ HAI điều kiện: StudentId=3 VÀ StudentName='David Miller':

mysql> DELETE FROM DemoTable722 
WHERE StudentId = 3 AND StudentName = 'David Miller';
Query OK, 1 row affected (0.21 sec)

Kiểm tra lại (bản ghi David Miller đã bị xóa):

mysql> SELECT * FROM DemoTable722;
+-----------+--------------+------------+
| StudentId | StudentName  | StudentAge |
+-----------+--------------+------------+
| 1         | Chris Brown  | 23         |
| 2         | John Smith   | 21         |
| 4         | Adam Smith   | 20         |
| 5         | Carol Taylor | 24         |
+-----------+--------------+------------+
4 rows in set (0.00 sec)

Các biến thể hữu ích

Yêu cầuCú pháp
Xóa theo nhiều giá trị của cùng cộtWHERE Id IN (1,2,3)
Xóa theo khoảng giá trịWHERE Age BETWEEN 20 AND 25
Xóa với subqueryWHERE Id IN (SELECT Id FROM other_table WHERE ...)
Xóa tất cả trừ một vàiWHERE Id NOT IN (1,2)
Xóa với JOIN (bảng liên quan)DELETE t1 FROM t1 JOIN t2 ON ... WHERE ...

⚠️ Cảnh quan trọng

  • Luôn chạy SELECT trước DELETE để xác nhận bản ghi sẽ bị xóa: SELECT * FROM table WHERE ...
  • Không có UNDO sau DELETE (trừ khi trong transaction chưa COMMIT)
  • Cân nhắc SOFT DELETE (cột deleted_at, is_deleted) thay vì xóa vật lý
  • Foreign Key: nếu bảng khác tham chiếu, cần cấu hình ON DELETE CASCADE hoặc xóa bảng con trước