我们有 2 个表:用户和状态
状态表有一个user_id、status 和occured_on。状态为“已删除”或“已添加”,并且occured_on 是删除或添加用户的日期。
我需要当前添加的用户。即,最新状态记录被“添加”的所有(不同的)用户。
我正在使用 Rails,并尝试过:
User
.joins(:statuses)
.where('statuses.status = ?', 'added')
.order('statuses.occured_on DESC')
.uniq
转换为 SQL:
SELECT DISTINCT users.*
FROM users
INNER JOIN statuses
ON statuses.user_id = users.id
WHERE statuses.status = 'added'
ORDER BY statuses.occured_on DESC
这给了我错误:
PG::Error: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ...statuses.status = 'added') ORDER BY statuses.oc...
我很高兴知道可以工作的 Rails 代码或直接的 SQL。
另外,如果可能的话,我不喜欢子选择。