sql - 如何在 PostgreSQL 中添加基于排序顺序的序号 id 字段

标签 sql postgresql select row-number

我想知道如何根据对某些字段(例如 ISO 代码)进行排序来向表(例如 country)添加字段?

我搜索了一下,发现了 following question ,但是解决方案是基于MySQL的。我尝试使用 Postgres 9.3 中的解决方案,但在 := 上出现语法错误。我尝试的是:

SELECT  l.*,
        @curRow := @curRow + 1 AS row_number
FROM    country l ORDER BY ISO
JOIN    (SELECT @curRow := 0) r;

如何使其适应 Postgres?

最佳答案

您可以使用row_number() window function :

SELECT   country.*, ROW_NUMBER() OVER (ORDER BY iso)
FROM     country
ORDER BY iso

关于sql - 如何在 PostgreSQL 中添加基于排序顺序的序号 id 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27582994/

相关文章:

SQL - SELECT MAX() 和伴随字段

java - java 提供什么工具来从 SQL 中的executeUpdate() 方法的命令行获取输入

php - 当 if 返回 false 时,如何退出 if 语句而不影响 php 的其余部分

r - 天际线查询或高效边界的实现

javascript - jQuery - 在选择中重用变量

jquery - 仅使用 Ajax 连接到 SQL 数据库?

sql - postgres 数据库的 ShareLock 和 ExclusiveLock

PHP 调用 Postgres void 函数

ruby-on-rails - 如何建模用户自定义表模型与字段模型的关系

MYSQL选择另一个表中的FOREACH元素的元素数量