Yur*_*dow 1 sql postgresql activerecord
鉴于"人"表中的数据:
+----+-------+
| id | name |
+----+-------+
| 1 | Jane |
| 2 | Joe |
| 4 | John |
| 5 | Alice |
| 6 | Bob |
+----+-------+
Run Code Online (Sandbox Code Playgroud)
顺序:
SELECT * FROM people ORDER BY name
Run Code Online (Sandbox Code Playgroud)
...将返回:
+----+-------+
| id | name |
+----+-------+
| 5 | Alice |
| 6 | Bob |
| 1 | Jane |
| 2 | Joe |
| 4 | John |
+----+-------+
Run Code Online (Sandbox Code Playgroud)
如何写一个查询 - 包括上面的顺序 - 只返回具有给定id的那个之后的行,例如,如果给定id为1,它将返回:
+----+-------+
| id | name |
+----+-------+
| 2 | Joe |
| 4 | John |
+----+-------+
Run Code Online (Sandbox Code Playgroud)
要清楚,id是可变的,并且在手之前是未知的.
使用通常支持的SQL的方法会很棒,但如果它们有任何其他用途,我会使用PostgreSQL 9.2和ActiveRecord 3.2,例如OVER()和ROW_NUMBER().
[编辑]我之前显示了错误的所需结果集,包括具有给定id的行.但是,如问题中所述,结果集应仅包含给定ID 之后的行.
select *
from people
where
name >= (
select name
from people
where id = 1
)
and id != 1
order by name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |