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

เพิ่มคอลัมน์นับลำดับแถว (Serial Number) ใน MySQL


เพื่อเพิ่มคอลัมน์ที่นับลำดับแถวเป็นหมายเลขเรียงลำดับ (Serial Number) สามารถใช้ตัวแปร Global ในคำสั่ง SELECT

ตัวอย่างการใช้งาน

สร้างตาราง:

mysql> create table addColumnToCountAsSerialNumber ( Id int, Name varchar(20), Age int, Salary int ); Query OK, 0 rows affected (0.80 sec)

เพิ่มข้อมูล:

mysql> insert into addColumnToCountAsSerialNumber values(10,'John',23,8576); Query OK, 1 row affected (0.10 sec)
mysql> insert into addColumnToCountAsSerialNumber values(12,'Carol',21,4686); Query OK, 1 row affected (0.14 sec)
mysql> insert into addColumnToCountAsSerialNumber values(9,'Mike',22,38585); Query OK, 1 row affected (0.11 sec)
mysql> insert into addColumnToCountAsSerialNumber values(15,'Sam',25,38586); Query OK, 1 row affected (0.16 sec)
mysql> insert into addColumnToCountAsSerialNumber values(20,'Bob',26,43544); Query OK, 1 row affected (0.17 sec)
mysql> insert into addColumnToCountAsSerialNumber values(39,'Larry',29,485886); Query OK, 1 row affected (0.16 sec)

แสดงข้อมูล:

mysql> select *from addColumnToCountAsSerialNumber ;

ผลลัพธ์:

+------+-------+------+--------+ | Id   | Name  | Age  | Salary | +------+-------+------+--------+ | 10   | John  | 23   | 8576   | | 12   | Carol | 21   | 4686   | | 9    | Mike  | 22   | 38585  | | 15   | Sam   | 25   | 38586  | | 20   | Bob   | 26   | 43544  | | 39   | Larry | 29   | 485886 | +------+-------+------+--------+ 6 rows in set (0.00 sec)

คำสั่งนับลำดับแถวด้วยตัวแปร Global:

mysql> select @globalVar:=@globalVar+1 RowCount, tblColumns.* FROM (select @globalVar:=0) initializeGlobalVariable, addColumnToCountAsSerialNumber tblColumns;

ผลลัพธ์ (มีคอลัมน์ RowCount เพิ่มเข้ามา):

+----------+------+-------+------+--------+ | RowCount | Id   | Name  | Age  | Salary | +----------+------+-------+------+--------+ | 1        | 10   | John  | 23   | 8576   | | 2        | 12   | Carol | 21   | 4686   | | 3        | 9    | Mike  | 22   | 38585  | | 4        | 15   | Sam   | 25   | 38586  | | 5        | 20   | Bob   | 26   | 43544  | | 6        | 39   | Larry | 29   | 485886 | +----------+------+-------+------+--------+ 6 rows in set (0.06 sec)

หมายเหตุ: ใน MySQL 8.0+ สามารถใช้ ROW_NUMBER() OVER () ได้โดยตรง ซึ่งเป็นวิธีที่ทันสมัยกว่า