【发布时间】:2012-01-20 17:11:14
【问题描述】:
我有这个 postgres sql 查询:
select * from stats where athlete_id = 5
正如你想象的那样,这将返回每个 ID 为 5 的运动员的所有统计数据
到目前为止一切正常。
但是我刚刚注意到,对于大于 110 的运动员 ID,它以相反的顺序返回统计数据行。
因此,对于运动员 ID = 110,'id' 列会像这样出现,这是我习惯的:
2325
2401
2482
2537
2592
2647
...
等等。每个统计表行按 id 排序。
那么如果你选择 111,就会出现这样的结果:
5652
5610
5569
5528
5487
5437
5387
5336
...
这怎么可能?这都是在 pgadmin 界面内进行的查询。没有额外的 where 子句,只有我说过的那个,即 WHERE player_id = 111
什么?我一直在进行各种代码更改,但是在 pgaadmin /pgsql 中到底是什么导致了这种情况?
110 和 111 之间发生了什么?在 Rails 中进行了大量的重构和代码更改,但没有实际的直接 SQL 操作。是的,我意识到答案可能在那里,但我不知道如何看,因为这不在 rails 应用程序中 - 这是通过 pgadmin 的纯 SQL,所以必须在 postgres 中完成一些事情 - 我需要了解什么可能是这样,或者我无法调试。
有什么想法吗?在 Rails 中,诸如:
Athlete.stats.last.score 返回“第一”行而不是“最后”行,完全搞砸了应用程序,但仅适用于 id 大于 110 的运动员!
完全糊涂了!
【问题讨论】:
-
行在数据库中不是按特定顺序保存的,如果你想让行按列排序,请使用按列排序,
标签: sql ruby-on-rails postgresql select