[英]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.