【postgresql】查询结果添加一个额外的自增编号

本来是用mysql好好的,因为代码迁移到 postgresql。所以出问题了呗。

事情是这样的,我们在查询结果中临时一列作为从1开始的序列号。

脱敏后的sql

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开始进行排序生成序列号

在mysql中执行的结果:

【postgresql】查询结果添加一个额外的自增编号_第1张图片

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

【postgresql】查询结果添加一个额外的自增编号_第2张图片

怎么办?

给答案:

给postgresql 可以执行的sql

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

在postgresql中执行的结果:

【postgresql】查询结果添加一个额外的自增编号_第3张图片




row_number() 函数

row_number() 函数返回当前行所在的分区内的序号,从 1 开始。

语法
row_number()
OVER (
  [PARTITION BY partition_column_list]
  [ORDER BY order_column_list]
)

partition_column_list 参与分区的列的列表。

order_column_list 参与排序的列的列表。

具体用法参考上面sql

你可能感兴趣的:(postgresql,linux,postgresql,数据库)