给定“人”表中的数据:
+----+-------+
| id | name |
+----+-------+
| 1 | Jane |
| 2 | Joe |
| 4 | John |
| 5 | Alice |
| 6 | Bob |
+----+-------+
和顺序:
SELECT * FROM people ORDER BY name
...这将返回:
+----+-------+
| id | name |
+----+-------+
| 5 | Alice |
| 6 | Bob |
| 1 | Jane |
| 2 | Joe |
| 4 | John |
+----+-------+
如何编写一个查询(包括上面的顺序),它只返回具有给定 id 的行之后的行,例如,如果给定 id 为 1,它将返回:
+----+-------+
| id | name |
+----+-------+
| 2 | Joe |
| 4 | John |
+----+-------+
需要明确的是,id 是可变的,并且事先不知道。
使用通常支持的 SQL 的方法会很棒,但如果 PostgreSQL 9.2 和 ActiveRecord 3.2 有任何其他用途,例如 OVER() 和 ROW_NUMBER(),我将使用它们。
[编辑] 我之前显示了错误的所需结果集,包括具有给定 ID 的行。但是,如问题中所述,结果集应仅包含给定 ID之后的行。