1

このpostgresqlコードがあります。

SELECT * 
FROM listings 
WHERE status != 'inactive' 
ORDER BY pkey DESC LIMIT 1000 OFFSET 0

正確には、これはまだアクティブな FIRST 1000 リストを照会し、DESC でソートします。最新/最新のデータを照会する最良の方法はありますか? たとえば、500000 行がある場合、クエリを実行したときに、499000-500000 を DESC でクエリする必要があります。

助けてくれてありがとう。

4

2 に答える 2

2

言葉を細かく刻むためだけに、あなたは言いました

これにより、まだアクティブな最初の1000のリストが照会され、DESCでソートされます。

これは正確ではありません。ソートIDDESCをソートしてから、「最初の」1000を選択します(ソートされたDESCは「最後の」1000と見なすことができます)。

ですから、あなたの質問に対する答えはあなたの質問にあると思います。表示するクエリは、「最後の」(つまり、列'pkey`の値が最大のレコード)1000レコードを、最新から1000年の順に選択します。

唯一の注意点は、正確には499000-500000ではないということです。これは、最新の1,000行すべてが「アクティブ」である場合にのみ当てはまります。

于 2012-08-26T17:01:14.223 に答える
0

Y 降順で並べ替えられた最後の X レコードは、Y 昇順で並べ替えられた最初の X レコードと同じですよね? 結果が得られたら、順序をもう一度反転する必要があります。

簡単な例:

Data: C, E, B, A, D

Descending:  E, D, C, B, A
Descending (last 3):  C, B, A

Ascending:  A, B, C, D, E
Ascending (first 3):  A, B, C
Ascending (first 3, reverse sorted):  C, B, A
于 2012-08-26T16:58:02.130 に答える