我正在尝试使用Postgres 9.3.2执行简单的查询。
SELECT event.id AS event_id, event.created_at AS event_created_at, event.updated_at AS event_updated_at, event.title AS event_title, event.summary AS event_summary, event.image AS event_image, event.active AS event_active, event.raw_score AS event_raw_score, event._score AS event__score, user_1.id AS user_1_id, user_1.email AS user_1_email, user_1.image AS user_1_image, user_1.name AS user_1_name, user_1.password AS user_1_password, user_1.active AS user_1_active, user_1.confirmed_at AS user_1_confirmed_at, user_1.created_at AS user_1_created_at, user_1.updated_at AS user_1_updated_at
FROM event LEFT OUTER JOIN (users_events AS users_events_1 JOIN "user" AS user_1 ON user_1.id = users_events_1.user_id) ON event.id = users_events_1.event_id ORDER BY event._score DESC
我期待结果按event._score
排序,降序,但它们永远不会。它们似乎没有以任何方式与event._score
相关联。该列的数据类型是双精度。
我期望值的顺序是:
5787.0428202
5787.0427916
5787.0427628
但他们的回复是:
5787.0427916
5787.0427628
5787.0428202
我几十个小时以来一直在努力解决这个问题,并且无法弄清楚为什么这么简单的事情无法正常工作。
答案 0 :(得分:1)
经过更多挖掘后,事实证明这不是Postgres的问题,而是我使用的ORM(sqlalchemy)是如何设置的。 _score
属性未在数据库中正确设置,尽管它是在会话中设置的,因此会话中的对象返回正确的值,但从数据库中提取的对象不是。