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

ลบแถวเฉพาะในตาราง MySQL ด้วย NOT IN

การเตรียมข้อมูล

สร้างตารางพร้อม AUTO_INCREMENT เริ่มต้นที่ 101:

mysql> CREATE TABLE DemoTable1830 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(20)
) AUTO_INCREMENT=101;

เพิ่มข้อมูล 5 รายการ:

mysql> INSERT INTO DemoTable1830(StudentName) VALUES('Chris');
mysql> INSERT INTO DemoTable1830(StudentName) VALUES('David');
mysql> INSERT INTO DemoTable1830(StudentName) VALUES('Mike');
mysql> INSERT INTO DemoTable1830(StudentName) VALUES('Sam');
mysql> INSERT INTO DemoTable1830(StudentName) VALUES('Bob');

ลบแถวเฉพาะด้วย NOT IN

เก็บเฉพาะ ID 101, 103, 105 (ลบ ID 102, 104):

mysql> DELETE FROM DemoTable1830
    WHERE StudentId NOT IN('101','103','105');
Query OK, 2 rows affected (0.00 sec)

ตรวจสอบผลลัพธ์

mysql> SELECT * FROM DemoTable1830;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|       101 | Chris       |
|       103 | Mike        |
|       105 | Bob         |
+-----------+-------------+

เทคนิคเพิ่มเติม

  • ใช้ IN เพื่อลบเฉพาะ ID ที่ระบุ: WHERE StudentId IN(102,104)
  • ใช้ BETWEEN สำหรับช่วง: WHERE StudentId BETWEEN 102 AND 104
  • รวมเงื่อนไขหลายอย่าง: WHERE StudentId NOT IN(101,103) AND StudentName != 'Bob'
  • ทำการ Backup ก่อนลบข้อมูลจริงเสมอ