ここでは、クエリです:クエリはHerokuの上でローカルに動作しますが、ないのPostgreSQL(同じデータ)
はActiveRecord :: StatementInvalid(PGError:ERROR: "オーバー" 構文でエラーまたは近くには、(*、ランクを選択)(パーティションオーバーthread_iで... ^
SELECT *
FROM (
select *, rank() over (partition by thread_id order by created_at DESC)
from posts
where circle_id IN (134) OR (receiver_id=3)
) as dt
WHERE rank = 1
EDITは: Rails 3 app with PostgreSQL - Getting the list of messages grouped by converstation
結局のところHerokuのは、共有DBがPostgrである:ここで私が何をしようとしています何の詳細な説明はありますeSQLバージョン8.3したがって、Windows機能はありませんので、PostgreSQL 8.3でこのクエリを実行するにはどうすればいいですか?
感謝!
デレクとヤヒアから派生テーブルソリューションは8.3で動作するはずです。 'posts.created_at = dt.maxdt'が1つのスレッドに対して複数の結果を生成する可能性があります。重複した 'thread_id、created_at'のペアを処理するクライアント側のチェックを含めることができます。重複の可能性はかなり低いですが、「低」と「ゼロ」は全く同じではありません。 –
は、重複した問題の可能な解決策で私の答えを更新しました... – Yahia