ไม่มีการเทียบเท่า ROW_NUMBER() ใน MySQL สำหรับการแทรก แต่คุณสามารถทำได้ด้วยความช่วยเหลือของตัวแปร ไวยากรณ์มีดังนี้ −
SELECT(@yourVariableName:=@yourVariableName + 1) AS `anyAliasName`,yourColumnName1,yourColumnName2,...NFROMyourTableName ,(SELECT @yourVariableName:=0) AS anyAliasName;
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −
mysql> สร้างตาราง RowNumberDemo -> ( -> UserId int, -> UserName varchar(20) -> );Query OK, 0 แถวได้รับผลกระทบ (0.74 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −
mysql> แทรกลงในค่า RowNumberDemo (10,'John');Query OK, 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงในค่า RowNumberDemo (50,'Carol'); Query OK, 1 แถวได้รับผลกระทบ (0.20 วินาที )mysql> แทรกลงในค่า RowNumberDemo (100, 'Sam'); แบบสอบถามตกลง, 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า RowNumberDemo (150, 'ไมค์'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.54 วินาที) mysql> แทรกลงในค่า RowNumberDemo (210,'Bob');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.58 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก RowNumberDemo;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+---------+----------+| รหัสผู้ใช้ | ชื่อผู้ใช้ |+-------+----------+| 10 | จอห์น || 50 | แครอล || 100 | แซม || 150 | ไมค์ || 210 | Bob |+-------+----------+5 แถวในชุด (0.00 วินาที)นี่คือข้อความค้นหาเพื่อให้ได้สิ่งที่เทียบเท่า ROW_NUMBER -
mysql> SELECT -> (@ROW_NUMBER:=@ROW_NUMBER + 1) AS `ROW_NUMBER`,UserId,UserName -> FROM -> RowNumberDemo,(SELECT @ROW_NUMBER:=0) AS t;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+------------+---------+----------+| ROW_NUMBER | รหัสผู้ใช้ | ชื่อผู้ใช้ |+------------+---------+----------+| 1 | 10 | จอห์น || 2 | 50 | แครอล || 3 | 100 | แซม || 4 | 150 | ไมค์ || 5 | 210 | Bob |+------------+-------+----------+5 แถวในชุด (0.03 วินาที)