ลำดับของคอลัมน์ในส่วนคำสั่ง SET ของคำสั่ง UPDATE มีความสำคัญเนื่องจาก MySQL ให้ค่าที่อัพเดตแก่ชื่อคอลัมน์ที่ใช้ในนิพจน์ ใช่ มันจะสร้างความแตกต่างอย่างมากในชุดผลลัพธ์ที่ส่งคืนโดย MySQL ต่อไปนี้เป็นตัวอย่างเพื่อให้ชัดเจน -
ตัวอย่าง
ในตัวอย่างนี้ เรากำลังมีตาราง 'ประกวดราคา' อันดับแรก เราจะเขียนคำสั่ง UPDATE โดยใช้ 'tender_id' เป็นคอลัมน์แรก และ 'rate' เป็นคอลัมน์ที่สองใน SET clause จากนั้นเราจะเขียนคำสั่ง UPDATE โดยใช้ 'rate' เป็นคอลัมน์แรก และ 'tender_id' เป็นคอลัมน์ที่สอง ตาราง 'ประกวดราคา'.
mysql> Select * from tender; +-----------+---------+------+ | tender_id | company | rate | +-----------+---------+------+ | 200 | ABC | 1000 | | 300 | ABD | 6000 | | 301 | ABE | 7000 | | 302 | ABF | 3500 | | 303 | ABG | 3600 | +-----------+---------+------+ 5 rows in set (0.00 sec) mysql> UPDATE tender SET tender_id = tender_id + 100, rate = tender_id * 4 WHERE tender_id = 200; Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0
ข้อความค้นหาด้านบนจะอัปเดตค่าของ 'tender_id' ก่อน จากนั้นจึงอัปเดตค่าของ 'rate' ตามค่าใหม่ของ 'tender_id' สามารถสังเกตได้ในชุดผลลัพธ์ที่ส่งคืนโดย MySQL ดังต่อไปนี้ -
mysql> Select * from tender; +-----------+---------+------+ | tender_id | company | rate | +-----------+---------+------+ | 300 | ABC | 1200 | | 300 | ABD | 6000 | | 301 | ABE | 7000 | | 302 | ABF | 3500 | | 303 | ABG | 3600 | +-----------+---------+------+ 5 rows in set (0.00 sec) mysql> UPDATE tender1 SET rate = tender_id * 4, tender_id = tender_id + 200 WHERE company = 'ABD'; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0
ตอนนี้ แบบสอบถามด้านบนจะอัปเดตค่า 'อัตรา' ก่อนตามค่าเดิมของ 'tender_id' แล้วอัปเดตค่าของ 'tender_id' ซึ่งสามารถสังเกตได้ในชุดผลลัพธ์ที่ส่งคืนโดย MySQL ดังต่อไปนี้ -
mysql> Select * from tender; +-----------+---------+------+ | tender_id | company | rate | +-----------+---------+------+ | 300 | ABC | 1200 | | 500 | ABD | 1200 | | 301 | ABE | 7000 | | 302 | ABF | 3500 | | 303 | ABG | 3600 | +-----------+---------+------+ 5 rows in set (0.00 sec)
ด้วยวิธีนี้ การเปลี่ยนลำดับของคอลัมน์ในส่วนคำสั่ง SET จะสร้างความแตกต่างอย่างมากในผลลัพธ์