id | user | message
___________________
0 | dan | ...
1 | john | ...
2 | dan | ...
3 | dan | ...
4 | john | ...
(and so on)
どのように私は後に100のメッセージへのidの前に100件のメッセージからダンのメッセージを選択することができますか? id列+/- 100に基づいて選択すると、他のユーザーのメッセージが途切れてしまう可能性があるため、両側で100になることは保証されません。私がSELECT * from table WHERE user = 'dan' and (some clause here) order by id;
データベースたいあなたはROW_NUMBER ...この
Select
ROW_NUMBER() over (paritition by user order by id) as 'mrnk'
,id
,user
,message
From table
Where user = 'dan'
and mrnk <= 100
または何あなたが探しているダンのメッセージの数のようなものを使用することができますPostgresqlの
これはまさに私が感謝したことです。最初のサブクエリでは順序が間違っていますが、descで順序を使用して必要な行を取得しますが、後にascで順序を並べ替えることはないので注意してください。クエリの最後に 'ORDER BY id'を投げる必要があります。 –