Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

DELETE ข้อมูลใน MySQL ด้วยเงื่อนไขหลายคอลัมน์ (WHERE col1=val1 AND col2=val2)

การลบข้อมูลด้วยเงื่อนไขหลายคอลัมน์ (AND)

ใช้ WHERE ร่วมกับ AND เพื่อระบุเงื่อนไขหลายคอลัมน์พร้อมกัน จะลบเฉพาะแถวที่ **ตรงทุกเงื่อนไข**

Syntax

DELETE FROM table_name 
WHERE column1 = value1 
  AND column2 = value2 
  ...;

ตัวอย่างการใช้งาน

สร้างตารางนักเรียน:

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)

mysql> INSERT INTO DemoTable722 (StudentName, StudentAge) VALUES 
    ('Chris Brown', 23), ('John Smith', 21), ('David Miller', 22), 
    ('Adam Smith', 20), ('Carol Taylor', 24);
Query OK, 5 rows affected

ข้อมูลทั้งหมด:

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)

ลบแถวที่ StudentId = 3 **และ** StudentName = 'David Miller':

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

ตรวจสอบผลลัพธ์ - แถว David Miller หายไป:

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)

เคล็ดลับความปลอดภัย

  • **ทดสอบด้วย SELECT ก่อน DELETE:**
    SELECT * FROM DemoTable722 WHERE StudentId = 3 AND StudentName = 'David Miller';
  • ใช้ LIMIT 1 ป้องกันลบผิดหลายแถว: DELETE ... WHERE ... LIMIT 1;
  • Backup หรือใช้ Transaction (START TRANSACTION; DELETE ...; ROLLBACK/COMMIT;)
  • Foreign Key: หากมี FK อ้างอิง อาจลบไม่ได้ (ON DELETE RESTRICT) หรือลบแบบ Cascade

DELETE หลายเงื่อนไข OR

DELETE FROM table WHERE col1 = 'A' OR col2 = 'B';  -- ลบถ้าตรงอย่างน้อย 1 เงื่อนไข