簡體   English   中英

為postgres表中的每個組選擇隨機行

[英]Select random row for each group in a postgres table

我有一張大致的表格:

id | category | link | caption | image

我的目標是從表中的每個不同類別中獲取表中所有類別的隨機行。 計划是將每一行分配給其各自類別的變量。

現在我正在使用類似的多個SELECT語句:

SELECT link, caption, image FROM table WHERE category='whatever' ORDER BY RANDOM() LIMIT 1

但這看起來不那么優雅,並且創建了更多的數據庫,這是昂貴的。

我很確定在Postgres中使用窗口函數有一種方法可以做到這一點,但我對它們沒有經驗,我不完全確定如何使用它來獲得我想要的東西。

謝謝你的幫助!

嘗試類似的東西:

SELECT DISTINCT ON (category) *
FROM table 
ORDER BY category, random();

或者使用窗口功能:

SELECT * 
FROM (
SELECT *, row_number() OVER (PARTITION BY category ORDER BY random()) as rn
FROM table ) sub
WHERE rn = 1;

暫無
暫無

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

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