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

Xóa hàng trong MySQL khi 2 cột có giá trị bằng nhau

DELETE với điều kiện so sánh 2 cột bằng nhau

Sử dụng DELETE ... WHERE col1 = col2 để xóa các hàng mà 2 cột số (hoặc chuỗi) có giá trị giống hệt nhau.

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    Name VARCHAR(40),
    Score1 INT,
    Score2 INT
);
mysql> INSERT INTO DemoTable VALUES
    ('John', 56, 76), ('Chris', 77, 77), ('David', 89, 98);

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+-------+--------+--------+
| Name  | Score1 | Score2 |
+-------+--------+--------+
| John  | 56     | 76     |
| Chris | 77     | 77     |  ← Score1 = Score2
| David | 89     | 98     |
+-------+--------+--------+

3. Truy vấn: Xóa hàng có Score1 = Score2

mysql> DELETE FROM DemoTable WHERE Score1 = Score2;

Kết quả: Query OK, 1 row affected (xóa Chris)

4. Kiểm tra sau xóa

mysql> SELECT * FROM DemoTable;
+-------+--------+--------+
| Name  | Score1 | Score2 |
+-------+--------+--------+
| John  | 56     | 76     |
| David | 89     | 98     |
+-------+--------+--------+

Mở rộng - Các điều kiện so sánh hữu ích:

  • WHERE col1 = col2: Bằng nhau
  • WHERE col1 <> col2 / WHERE col1 != col2: Khác nhau
  • WHERE col1 > col2: Lớn hơn
  • WHERE col1 BETWEEN col2 AND col3: Trong khoảng
  • WHERE col1 IN (col2, col3, col4): Bằng một trong các cột khác

Cẩn trọng: Luôn chạy SELECT * FROM DemoTable WHERE Score1 = Score2 trước để xem trước dữ liệu sẽ bị xóa.

Với chuỗi (VARCHAR): So sánh mặc định case-insensitive (collation _ci). Dùng WHERE BINARY col1 = col2 để so sánh case-sensitive.