に最新のレコードを見つけるために、私はPostgreSQLのときシリーズ= X REVISION_IDによってグループ化されたときに最大(年)のためのtable_idを見つける必要があり、このようなSQLグループ
table_id | series_id | revision_id | year
------------------------------------------
1 | 1 | 1 | 2010
2 | 2 | 1 | 2009
3 | 2 | 2 | 2008
4 | 2 | 2 | 2009
5 | 2 | 3 | 2010
6 | 2 | 3 | 2008
7 | 3 | 2 | 2007
8 | 3 | 3 | 2010
9 | 3 | 3 | 2010
のようなテーブルを持っています。
例:x = 2のiは、この結果
table_id | series_id | revision_id | year
------------------------------------------
2 | 2 | 1 | 2009
4 | 2 | 2 | 2009
5 | 2 | 3 | 2010
を期待していたときに、これは動作しません
SELECT * from table
WHERE series_id = 2
AND table_id IN (
SELECT table_id
FROM table
WHERE series_id = 2
GROUP by revision
ORDER BY year DESC
)
私は返す必要があるため
私はPostgreSQLでこれを行う方法を把握することはできませんフィールド私はグループ化していません
ここに他のSQLの味のいくつかの同様の問題があります。
MySQLの SQL Query, Selecting 5 most recent in each group
のSQL Server SQL Server - How to select the most recent record per user?
これらの問題の解決策は機能しません。 – OrangeDog
mysqlでは、グループに含まれていないフィールドを選択できますが、これはポストグルでは許可されていません。 SQLサーバーのTOP1はサポートされていません。 –
トップレコードのみを選んでいる場合を除いて、サブクエリの中で順序付けをすることはお勧めできません。ソートはすぐ後で(SQL標準によって)破棄されます。 –