对于存在的每个父项,我想随机选择 1 个子行。表结构如下所示:
parent
id
child
parent_id
id
rank
每个父项有 1..N 个子记录,每个父项的排名从 1 到 N 是唯一的。
输出应该是这样的:
parent child rank
--------+-------+-------
1 34 7
2 56 8
...
每个父代产生一个子行。 (这将作为伯努利试验的基础。)
(PostgreSQL 有一个 random() 函数,它给出一个 0 到 1 之间的数字。)
最佳答案
对 postgresql 一点也不熟悉,但也许是这样的?
SELECT DISTINCT ON (parent_id) parent_id as "parent", id as "child", rank
FROM child c
ORDER BY
parent_id, random()
关于sql - 如何用sql选择随机试用? (伯努利试验),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4321958/