ใช้ WHERE Id % 2 = 0 อัปเดตเฉพาะแถวคู่ (Even ID)
รวม REPLACE() แทนที่ค่า และ WHERE Id % 2 = 0 เลือกแถวที่ ID หาร 2 ลงตัว (Even rows) เพื่ออัปเดตทีละแถวสลับ
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Subject VARCHAR(100)
);
INSERT INTO DemoTable (Subject) VALUES
('C'), ('MongoDB'), ('Java'), ('MongoDB'), ('Python'), ('MongoDB');
ข้อมูลก่อนอัปเดต
+----+---------+ | Id | Subject | +----+---------+ | 1 | C | | 2 | MongoDB | | 3 | Java | | 4 | MongoDB | | 5 | Python | | 6 | MongoDB | +----+---------+
คำสั่งอัปเดตแถวคู่ (Id 2,4,6) แทนที่ MongoDB → MySQL
UPDATE DemoTable SET Subject = REPLACE(Subject, 'MongoDB', 'MySQL') WHERE Id % 2 = 0;
ข้อมูลหลังอัปเดต
+----+---------+ | Id | Subject | +----+---------+ | 1 | C | | 2 | MySQL | | 3 | Java | | 4 | MySQL | | 5 | Python | | 6 | MySQL | +----+---------+
คำอธิบาย:
Id % 2 = 0เลือก ID คู่ (2, 4, 6, ...)REPLACE(Subject, 'MongoDB', 'MySQL')แทนที่คำว่า MongoDB ด้วย MySQL- แถวคี่ (1, 3, 5) ไม่ได้รับผลกระทบ
ประยุกต์ใช้:
- อัปเดตแถวคี่:
WHERE Id % 2 = 1 - ทุก N แถว:
WHERE Id % N = 0 - สุ่ม 50%:
WHERE RAND() < 0.5
⚠ ข้อควรระวัง: ใช้ ID ที่เป็น AUTO_INCREMENT และไม่มีช่องว่าง (Gap) จากการ DELETE หากมี Gap ลำดับอาจไม่สลับได้ตรงตามที่คาดหวัง ควรใช้ Window Function ROW_NUMBER() OVER (ORDER BY Id) (MySQL 8.0+) แทน