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

MySQL อัปเดตคอลัมน์ด้วย int ตามลำดับหรือไม่


ไวยากรณ์มีดังต่อไปนี้เพื่ออัปเดตคอลัมน์ด้วย int ตามลำดับ

set @yourVariableName=0;update yourTableNameset yourColumnName=(@yourVariableName:=@yourVariableName+1)order by yourColumnName ASC;

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามในการสร้างตารางมีดังนี้

mysql> สร้างตาราง updateColumnDemo -> ( -> Id int, -> OrderCountryName varchar(100), -> OrderAmount int -> );Query OK, 0 แถวได้รับผลกระทบ (1.76 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่ง insert

แบบสอบถามมีดังนี้

mysql> แทรกลงในค่า updateColumnDemo(Id,OrderCountryName) (10,'US');Query OK, 1 แถวได้รับผลกระทบ (0.46 วินาที)mysql> แทรกลงในค่า updateColumnDemo(Id,OrderCountryName) (20,'UK');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.98 วินาที)mysql> แทรกลงใน updateColumnDemo(Id,OrderCountryName) ค่า (30,'AUS');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.77 วินาที)mysql> แทรกลงใน updateColumnDemo (Id, OrderCountryName) ค่า (40,'ฝรั่งเศส');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (1.58 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select

แบบสอบถามมีดังนี้

mysql> เลือก *จาก updateColumnDemo;

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

<ก่อนหน้า>+------+-----------+-------------+| รหัส | OrderCountryName | OrderAmount |+------+--------------------------+-------------+| 10 | สหรัฐอเมริกา | NULL || 20 | สหราชอาณาจักร | NULL || 30 | AUS | NULL || 40 | ฝรั่งเศส | NULL |+------+--------------------------+-------------+4 แถวในชุด (1.00 วินาที )

นี่คือแบบสอบถามเพื่ออัปเดตคอลัมน์ด้วย int ตามลำดับ

mysql> set @sequenceNumber=0;Query OK, 0 แถวได้รับผลกระทบ (0.00 วินาที)mysql> อัปเดต updateColumnDemo -> set OrderAmount=(@sequenceNumber:=@sequenceNumber+1) -> สั่งซื้อโดย OrderAmount ASC; Query OK, ได้รับผลกระทบ 4 แถว (0.25 วินาที) แถวที่ตรงกัน:4 เปลี่ยนแล้ว:4 คำเตือน:0

ให้เราตรวจสอบบันทึกตารางอีกครั้ง

แบบสอบถามมีดังนี้

mysql> เลือก *จาก updateColumnDemo;

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

<ก่อนหน้า>+------+-----------+-------------+| รหัส | OrderCountryName | OrderAmount |+------+--------------------------+-------------+| 10 | สหรัฐอเมริกา | 1 || 20 | สหราชอาณาจักร | 2 || 30 | AUS | 3 || 40 | ฝรั่งเศส | 4 |+------+---------------------------------------+4 แถวในชุด (0.00 วินาที )