本来是用mysql好好的,因为代码迁移到 postgresql。所以出问题了呗。
事情是这样的,我们在查询结果中临时一列作为从1开始的序列号。
- SELECT
- ( @i := @i + 1 ) num,
- M.id
- FROM
- tb_order M,
- ( SELECT @i := 0 ) AS ID
- GROUP BY
- M.ID
- ORDER BY
- M.create_time DESC
SELECT (@i :=@i + 1) 是为了生成自增的序列号字段
SELECT @i := 0 是为了将i进行初始化每次查询的序列号都会从1开始进行排序生成序列号

同样的sql是postgresql执行报错的,错误结果如下:

怎么办?
- SELECT
- ROW_NUMBER() OVER (ORDER BY M.create_time DESC ) AS num,
- M.id
- FROM
- tb_order M
- GROUP BY
- M.ID
- ORDER BY
- M.create_time DESC

row_number() 函数返回当前行所在的分区内的序号,从 1 开始。
- row_number()
- OVER (
- [PARTITION BY partition_column_list]
- [ORDER BY order_column_list]
- )
partition_column_list 参与分区的列的列表。
order_column_list 参与排序的列的列表。
具体用法参考上面sql