
鲸鲸说数据
V1
2023/03/07阅读:10主题:全栈蓝
一句代码实现MySQL的伪序列
在查询数据的时候,我们有时候需要对查询出来的数据加上序列,「1,2,3,……n」
例如:我们根据表的某个字段排序后,要对这些数据加上序列,这个时候序号常常不是我们建表时设置好的自增的主键id,怎么办呢?
oracle数据库有专门的rownum
来解决伪序列问题,但是mysql却到目前为止还没有内置的函数等来解决此问题!
鲸鲸教大家「一句SQL语句代码」实现MySQL的伪序列问题!
SELECT
@rownum:=@rownum+1 AS rownum,
table_name.*
FROM (SELECT @rownum:=0) rm, table_name;
+--------+------------+---------+---------+-----------+-------------+
| rownum | sales_date | user_id | item_id | sales_num | sales_price |
+--------+------------+---------+---------+-----------+-------------+
| 1 | 2021-11-01 | 1 | A001 | 1 | 90 |
| 2 | 2021-11-01 | 2 | A002 | 2 | 220 |
| 3 | 2021-11-01 | 2 | B001 | 1 | 120 |
| 4 | 2021-11-02 | 3 | C001 | 2 | 500 |
| 5 | 2021-11-02 | 4 | B001 | 1 | 120 |
| 6 | 2021-11-03 | 5 | C001 | 1 | 240 |
| 7 | 2021-11-03 | 6 | C002 | 1 | 270 |
| 8 | 2021-11-04 | 7 | A003 | 1 | 180 |
| 9 | 2021-11-04 | 8 | B002 | 1 | 140 |
| 10 | 2021-11-04 | 9 | B001 | 1 | 125 |
| 11 | 2021-11-05 | 10 | B003 | 1 | 120 |
| 12 | 2021-11-05 | 10 | B004 | 1 | 150 |
| 13 | 2021-11-05 | 10 | A003 | 1 | 180 |
| 14 | 2021-11-06 | 11 | B003 | 1 | 120 |
| 15 | 2021-11-06 | 10 | B004 | 1 | 150 |
+--------+------------+---------+---------+-----------+-------------+
作者介绍

鲸鲸说数据
V1
💓公众号:鲸析 💓小红书:鲸鲸说数据