从 PostgreSQL 获取随机行?

Ber*_*ale 12 postgresql plpgsql

我想通过 id 从我的表中随机获取一行。

我的表:

ID|Word     |Dificult|Category_id|
1 |'Dumb'   |'Easy'  | 3         |
2 |'Leopard'|'Medium'| 6         |
Run Code Online (Sandbox Code Playgroud)

如果我的用户选择了一个类别和一个困难,我会选择一个带有用户参数的随机单词,例如:

idRaffle := raffle.id;
   -- raffle.id = An id that postgres will bring me by some raffle function. 
d := 'Easy';
c := 3;
select * from words where id=idRaffle and Dificult=d and Category_id=c

raffle.id
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得那个随机行 id ( raffle.id)。

注意它必须遵循用户的选择条件。

Cra*_*ger 13

要选择随机行,请参阅:

Postgres 中的快速随机行选择

SELECT *
FROM words
WHERE Difficult = 'Easy' AND Category_id = 3
ORDER BY random()
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

从 9.5 开始,还有TABLESAMPLE选项;有关详细信息,请参阅文档SELECTTABLESAMPLE

  • 这条路很慢 (3认同)