2010-12-01 39 views
2

对于存在的,我想选择1个行随机每个父母。该表结构如下:如何选择随机试用sql? (伯努利试行)

parent 
    id 

child 
    parent_id 
    id 
    rank 

那里是每个父母级别1..1子记录是每个父母从1去N.

独特的输出应该是这样的:

parent child rank 
--------+-------+------- 
1  34  7 
2  56  8 
... 

对于每个家长产生一个子行。 (这将作为伯努利试验的基础。)

(PostgreSQL有一个随机()函数,提供0和1之间的数字)

回答

1

不是在所有PostgreSQL的熟悉,但也许这样的事情?

SELECT DISTINCT ON (parent_id) parent_id as "parent", id as "child", rank 
FROM child c 
ORDER BY 
     parent_id, random() 
+0

比我想象的要简单得多。谢谢。 – 2010-12-01 07:50:05