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

กำลังอัปเดตตาราง MySQL ด้วยค่าจากตารางอื่นหรือไม่


เราสามารถอัปเดตตารางอื่นด้วยความช่วยเหลือของ inner join ให้เราสร้างสองตาราง

การสร้างตาราง

mysql> สร้างตาราง tblFirst -> ( -> id int, -> name varchar(100) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.48 วินาที)

กำลังแทรกบันทึก

mysql> INSERT เป็น tblFirst values(1,'John');Query OK, 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> INSERT เป็น tblFirst values(2,'Bob');Query OK, 1 แถวได้รับผลกระทบ (0.26 วินาที )mysql> INSERT ลงในค่า tblFirst (3,'David'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที)

แสดงบันทึกทั้งหมด

mysql> SELECT * จาก tblFirst;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+------+-------+| id | ชื่อ |+------+-------+| 1 | จอห์น || 2 | บ๊อบ || 3 | David |+------+-------+3 แถวในชุด (0.00 วินาที)

การสร้างตารางที่สอง

mysql> สร้างตาราง UpdTable -> ( -> IncId int auto_increment, -> คีย์หลัก (IncId), -> id int, -> ชื่อ varchar(100) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.57 วินาที )

กำลังแทรกบันทึก

mysql> INSERT ลงใน UpdTable(id,name) values(1,'Taylor');Query OK, 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> INSERT เป็น UpdTable(id,name) ค่า(2,'jason');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที)mysql> INSERT เป็น UpdTable(id,name) ค่า(3,'carol');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> INSERT เป็น UpdTable(id,name) ค่า(4,'john');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.16 วินาที)

แสดงบันทึกทั้งหมด

mysql> SELECT * จาก UpdTable;

ต่อไปนี้เป็นผลลัพธ์

mysql> SELECT *จาก UpdTable;+------+------+---------+| IncId | id | ชื่อ |+-------+------+-------+| 1 | 1 | เทย์เลอร์ || 2 | 2 | เจสัน || 3 | 3 | แครอล || 4 | 4 | john |+-------+------+--------+4 แถวในชุด (0.00 วินาที)

ดูผลลัพธ์ข้างต้น นามสกุลตรงกับระเบียนตารางแรก ตอนนี้ ฉันจะเขียนแบบสอบถามสำหรับ UPDATE -

mysql> อัปเดต UpdTable -> inner join tblFirst ON (UpdTable.name =tblFirst.name) -> SET UpdTable.id =tblFirst.id ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) แถวที่ตรงกัน:1 เปลี่ยนแล้ว:1 คำเตือน:0

เราได้อัปเดตบันทึกล่าสุดดังนี้ −

คำถามคือ

mysql> SELECT * จาก UpdTable;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-------+------+-------+| IncId | id | ชื่อ |+-------+------+-------+| 1 | 1 | เทย์เลอร์ || 2 | 2 | เจสัน || 3 | 3 | แครอล || 4 | 1 | john |+-------+------+--------+4 แถวในชุด (0.00 วินาที)

ดูตัวอย่างผลลัพธ์ อัปเดตรหัสแล้ว ซึ่งเดิมคือ 4 แต่ตอนนี้เป็น 1 แล้ว