如何用sql选择随机试用? (伯努利审判)

时间:2010-12-01 07:00:10

标签: sql postgresql random

对于存在的每个父母,我想随机选择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之间的数字。)

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()