MySQL 中插入 ROW_NUMBER() 等效項是什麼?


MySQL 中沒有用於插入的 ROW_NUMBER() 等效項,但你可以藉助變數來實現此目的。語法如下 −

SELECT
(@yourVariableName:=@yourVariableName + 1) AS `anyAliasName`,
yourColumnName1,yourColumnName2,...N
FROM
yourTableName ,(SELECT @yourVariableName:=0) AS anyAliasName;

為了理解上述語法,讓我們建立一個表。建立表的查詢如下 −

mysql> create table RowNumberDemo
   -> (
   -> UserId int,
   -> UserName varchar(20)
   -> );
Query OK, 0 rows affected (0.74 sec)

使用 insert 命令在表中插入一些記錄。查詢如下 −

mysql> insert into RowNumberDemo values(10,'John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into RowNumberDemo values(50,'Carol');
Query OK, 1 row affected (0.20 sec)
mysql> insert into RowNumberDemo values(100,'Sam');
Query OK, 1 row affected (0.20 sec)
mysql> insert into RowNumberDemo values(150,'Mike');
Query OK, 1 row affected (0.54 sec)
mysql> insert into RowNumberDemo values(210,'Bob');
Query OK, 1 row affected (0.58 sec)

使用 select 語句顯示錶中的所有記錄。查詢如下 −

mysql> select *from RowNumberDemo;

以下為輸出 −

+--------+----------+
| UserId | UserName |
+--------+----------+
|     10 | John     |
|     50 | Carol    |
|    100 | Sam      |
|    150 | Mike     |
|    210 | Bob      |
+--------+----------+
5 rows in set (0.00 sec)

以下是對等效於 ROW_NUMBER 的內容進行查詢的方法 −

mysql> SELECT
   -> (@ROW_NUMBER:=@ROW_NUMBER + 1) AS `ROW_NUMBER`,
UserId,UserName
   -> FROM
   -> RowNumberDemo,(SELECT @ROW_NUMBER:=0) AS t;

以下為輸出 −

+------------+--------+----------+
| ROW_NUMBER | UserId | UserName |
+------------+--------+----------+
|          1 |     10 | John     |
|          2 |     50 | Carol    |
|          3 |    100 | Sam      |
|          4 |    150 | Mike     |
|          5 |    210 | Bob      |
+------------+--------+----------+
5 rows in set (0.03 sec)

更新於: 30-7 月-2019

647 次瀏覽

開啟你的 職業生涯

完成課程,獲得認證

開始
廣告
© . All rights reserved.