【发布时间】:2015-12-05 21:52:42
【问题描述】:
我有一个用户列表。每个用户都有一个分数。我想查询我的数据库以获取 11 个用户的列表,按分数排序,并以特定记录为中心(我想要以前的 5 条记录、我查询的记录和后面的 5 条记录)。
所以例如,假设如下表:
Id Name Score
1 Albert 12
2 Bernard 85
3 Christian 98
4 Danielle 5
5 Emilie 65
6 Fabrice 34
7 Gaston 123
8 Hasting 76
9 Isidor 90
10 Jacques 3
11 Kellam 32
12 Lily 13
13 Mael 4242
如果我使用 Emily 作为基准运行查询,我应该得到以下信息:
5 Danielle --- -5
12 Albert --- -4
13 Lily --- -3
32 Kellam --- -2
34 Fabrice --- -1
65 Emilie --- 0 (pivot)
76 Hasting --- +1
85 Bernard --- +2
90 Isidor --- +3
98 Christian --- +4
123 Gaston --- +5
(请注意 Jacques 和 Mael 没有返回,因为它们不在请求的范围内)
我怎样才能通过仅使用最少量的查询和/或仅使用简单的查询来实现此结果?
我正在使用 Postgres,但我想要一些也可以在 SQLite 上运行的东西
【问题讨论】:
-
请告诉我们您使用的是什么 RDBMS,因为存在一些细微的语法差异。
-
@MikeNakis 我正在使用 Postgres,但我想要一些也可以在 SQLite 上运行的东西——我的测试使用它作为 postgres 的内存替代品。
标签: sql postgresql sqlite