簡體   English   中英

PostgreSQL-隨機順序與不同

[英]PostgreSQL - Random order with Distinct on

我正在嘗試以隨機順序(或降序)退回產品,並有一個按鈕可以獲取不屬於先前隨機產品的更多隨機產品。 基本上,如果我總共有15個產品,我想要3個隨機產品,然后單擊按鈕並獲得3個隨機項目,依此類推,直到沒有更多項目為止。

我正在進行一個漂亮的查詢,以從表中獲取數據。

我正在使用“ DISTINCT on ”來獲得一種產品並顯示其最低價格(沒有價格,它將列出具有多種價格的產品)。 我知道這會影響隨機排序/降序排序。

SELECT DISTINCT on (products.id) products.*, prices.price FROM products
INNER JOIN product_price_size ON products.id = product_price_size.productId
INNER JOIN prices ON prices.id = product_price_size.priceId
WHERE active = true AND (archived IS NULL OR archived = false)
ORDER BY products.id, prices.price LIMIT 3

“獲取更多的產品”按鈕基本上是隨偏移距LIMIT 3后的變量相同的查詢

希望這是有道理的。 有人對如何實現我想要獲得的想法有想法嗎?

謝謝!

您可以繼續增加穩定順序的偏移量。 一種排序可能基於諸如md5類的確定性哈希(更改some_random_salt為新的排序):

select id from tbl
order by md5(id || 'some_random_salt'), id
limit 3 offset ?

或素數的模(更改素數以不同的順序):

select id from tbl
order by id % 11, id
limit 3 offset ?

然后增加偏移量:

[...]
limit 3 offset 3

[...]
limit 3 offset 6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM