私はPostgreSQLデータベースを持っています。これはよくある問題のように思えますが、私のクエリを正しく取得できません。データベース内の各ユーザから最後のエントリを取得
私のテーブルには、次のようになります。
CREATE TABLE orders (
account_id INTEGER,
order_id INTEGER,
ts TIMESTAMP DEFAULT NOW()
)
毎回、新しい秩序があり、私がリンクする、それを使用account_id
とorder_id
。
私の問題は、各アカウントの最後の注文(ts
を見て)を持つリストを取得したいということです。例えば
私のデータがある場合、:
account_id order_id ts
5 178 July 1
5 129 July 6
4 190 July 1
4 181 July 9
3 348 July 1
3 578 July 4
3 198 July 1
3 270 July 12
それから私は、クエリは、各アカウントに対してのみ、最後の行を返すしたいと思います:
account_id order_id ts
5 129 July 6
4 181 July 9
3 270 July 12
私はGROUP BY account_id
を試みた、と私はそれを使用して各アカウントのMAX(ts)
を取得することができますが、その後は関連するorder_id
を取得する方法がありません。私はサブクエリも試みましたが、私はそれを正しく理解することができません。
ありがとうございます!
「LIMIT 1」と「ORDERBY ID DESC」を使用するために、いくつかの主キーが必要です。順序を逆にして1に制限します(したがって、最高のIDは最初の結果です。制限はこの1つの結果のみをとります)。 –
ここをクリックしてください:http://stackoverflow.com/questions/331367/sql-statement-help-select-latest-order-for-each-customer –
@Rajat私はただ一つの行が欲しくない、私は行が欲しいaccount_idごとに – gattoo