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

ROW_NUMBER () เทียบเท่าใน MySQL สำหรับการแทรก?


ไม่มีการเทียบเท่า 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 วินาที)