对于存在的每个父母,我想随机选择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之间的数字。)
答案 0 :(得分:1)
对postgresql一点也不熟悉,但也许是这样的?
SELECT DISTINCT ON (parent_id) parent_id as "parent", id as "child", rank
FROM child c
ORDER BY
parent_id, random()