【发布时间】:2013-05-20 10:40:09
【问题描述】:
我正在使用 postgresql 在 RoR 上编写服务器端。
今天我遇到了一个功能,我需要识别表格中一行的当前偏移量。客户发给我一个唯一标识符,我需要返回这个项目的当前偏移量。
所以,我有表格“项目”和模型“项目”。
项目有一个唯一的字段。我们称之为“钥匙”。
例如,我的“项目”表有以下数据:
id | key
----------
0 | abb
1 | acc
3 | cbb
5 | aqq
如果客户向我发送密钥“aqq”。我应该输出 4。 如果客户给我发“acc”。我应该输出 2。
如果有一种方法可以做到这一点,而无需从表中加载所有数据并循环遍历它?
提前致谢!
【问题讨论】:
-
... row_number() AS offset OVER (ORDER BY id)怎么样 -
顺便说一句:如果有两条记录,都带有
key = 'aqq'会发生什么?你想要第一个、最后一个还是平均偏移量? -
虽然这些答案本身并没有错,但这是一个非常糟糕的主意。它将执行糟糕,因为关系数据库确实面向集数据; table 有点用词不当,因为它暗示了一个不存在的排序。只是是没有第n行;你必须做一个明确的
SORT,然后在运行中进行某种行编号。看看你是否能找到一些方法来完全避免这样做。
标签: ruby-on-rails ruby-on-rails-3 postgresql