ใช้คำสั่ง UPDATE ... WHERE เพื่อเปลี่ยนค่าคอลัมน์เฉพาะแถวที่ตรงกับอีเมลที่ระบุ
ตัวอย่างการใช้งาน
1. สร้างตาราง
mysql> CREATE TABLE DemoTable (
EmailAddress VARCHAR(20),
Score INT
);
Query OK, 0 rows affected (1.05 sec)
2. เพิ่มข้อมูลทดสอบ
mysql> INSERT INTO DemoTable VALUES('Chris@gmail.com', 67);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('Robert@gmail.com', 57);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('David@gmail.com', 98);
Query OK, 1 row affected (0.14 sec)
3. แสดงข้อมูลก่อนอัปเดต
mysql> SELECT * FROM DemoTable; +------------------+-------+ | EmailAddress | Score | +------------------+-------+ | Chris@gmail.com | 67 | | Robert@gmail.com | 57 | | David@gmail.com | 98 | +------------------+-------+
4. อัปเดตคะแนนของ Robert@gmail.com เป็น 89
mysql> UPDATE DemoTable
SET Score = 89
WHERE EmailAddress = 'Robert@gmail.com';
Query OK, 1 row affected (0.25 sec)
Rows matched: 1 Changed: 1 Warnings: 0
5. ผลลัพธ์หลังอัปเดต
mysql> SELECT * FROM DemoTable; +------------------+-------+ | EmailAddress | Score | +------------------+-------+ | Chris@gmail.com | 67 | | Robert@gmail.com | 89 | | David@gmail.com | 98 | +------------------+-------+
ข้อควรระวัง
- ควรมี Index บนคอลัมน์ EmailAddress เพื่อประสิทธิภาพการค้นหา
- ใช้
WHEREเฉพาะเจาะจง เพื่อไม่ให้อัปเดตแถวอื่นโดยไม่ตั้งใจ - ควรใช้
LIMIT 1ต่อท้ายหากมั่นใจว่าอีเมลไม่ซ้ำ (Unique) เพื่อความปลอดภัย
ตัวอย่างเพิ่มเติม: อัปเดตหลายเงื่อนไข
UPDATE DemoTable SET Score = Score + 10 WHERE EmailAddress LIKE '%@gmail.com' AND Score < 100;
สรุป
การ UPDATE ตามอีเมลทำได้ง่ายด้วย WHERE EmailAddress = '...' ควรมี Index และตรวจสอบ Rows matched ว่าตรงกับจำนวนที่คาดหวัง