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

MySQL อัปเดตคอลัมน์ตามเงื่อนไขอีเมล (WHERE Email = ...)

ใช้คำสั่ง 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 ว่าตรงกับจำนวนที่คาดหวัง