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

การอัปเดตหลายแถวใน MySQL ด้วยเงื่อนไข IN()

เมื่อต้องการอัปเดตหลายแถวพร้อมกันโดยระบุเงื่อนไขในคอลัมน์เดียว สามารถใช้ฟังก์ชัน IN() ในส่วน WHERE ได้ ซึ่งช่วยลดความซับซ้อนของคำสั่ง SQL และเพิ่มประสิทธิภาพ

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

สร้างตารางตัวอย่าง:

mysql> CREATE TABLE DemoTable1420 (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> FirstName VARCHAR(20),
    -> LastName VARCHAR(20),
    -> Age INT
    -> );

เพิ่มข้อมูลทดสอบ:

mysql> INSERT INTO DemoTable1420 (FirstName, LastName, Age) VALUES ('Chris', 'Brown', 23);
mysql> INSERT INTO DemoTable1420 (FirstName, LastName, Age) VALUES ('David', 'Miller', 22);
mysql> INSERT INTO DemoTable1420 (FirstName, LastName, Age) VALUES ('John', 'Smith', 24);
mysql> INSERT INTO DemoTable1420 (FirstName, LastName, Age) VALUES ('John', 'Doe', 21);
mysql> INSERT INTO DemoTable1420 (FirstName, LastName, Age) VALUES ('Adam', 'Smith', 25);

ดูข้อมูลก่อนอัปเดต:

mysql> SELECT * FROM DemoTable1420;
+----+-----------+----------+------+
| Id | FirstName | LastName | Age  |
+----+-----------+----------+------+
|  1 | Chris     | Brown    |   23 |
|  2 | David     | Miller   |   22 |
|  3 | John      | Smith    |   24 |
|  4 | John      | Doe      |   21 |
|  5 | Adam      | Smith    |   25 |
+----+-----------+----------+------+

อัปเดตข้อมูลหลายแถวพร้อมกันด้วย IN():

mysql> UPDATE DemoTable1420
    -> SET FirstName = 'Carol', LastName = 'Taylor'
    -> WHERE Id IN (1, 3, 4, 5);

ผลลัพธ์หลังอัปเดต:

mysql> SELECT * FROM DemoTable1420;
+----+-----------+----------+------+
| Id | FirstName | LastName | Age  |
+----+-----------+----------+------+
|  1 | Carol     | Taylor   |   23 |
|  2 | David     | Miller   |   22 |
|  3 | Carol     | Taylor   |   24 |
|  4 | Carol     | Taylor   |   21 |
|  5 | Carol     | Taylor   |   25 |
+----+-----------+----------+------+

ข้อดีของการใช้ IN()

  • เขียนโค้ดสั้นกว่าและอ่านง่ายกว่าการใช้ OR หลายครั้ง
  • ประสิทธิภาพดีกว่าในบางกรณี เนื่องจาก MySQL สามารถเพิ่มประสิทธิภาพการค้นหาได้
  • รองรับทั้งตัวเลขและสตริง (เช่น WHERE Name IN ('John', 'Jane'))
  • สามารถใช้กับ Subquery ได้ (เช่น WHERE Id IN (SELECT Id FROM OtherTable))

วิธีนี้เหมาะสำหรับการอัปเดตหรือลบข้อมูลหลายแถวที่มีคีย์หลักหรือค่าที่ทราบล่วงหน้า