我正在尝试以随机顺序(或降序)返回产品,并且有一个按钮可以获得更多随机产品,这些产品不属于以前的随机产品。基本上如果我总共有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
“获取更多产品”按钮基本上是相同的查询, OFFSET 是 LIMIT 3
之后的变量希望这是有道理的。有没有人知道如何实现我想要的目标?
谢谢!
答案 0 :(得分:0)
您可以继续增加稳定排序的偏移量。一个排序可能基于确定性哈希,例如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