sql - 如何用sql选择随机试用? (伯努利试验)

标签 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 之间的数字。)

最佳答案

对 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/

相关文章:

PHP SQL Join 查询合并多数组中的内容

适用于 Windows 的 PostgreSQL 备份软件

MySQL RAND() 种子值几乎重复

performance - 架构和索引以及主键 : Differences in lookup performance?

mysql - 全文搜索引擎对比——Lucene、Sphinx、Postgresql、MySQL?

arrays - 随机排列数组,同时间隔重复元素

dart - 如果不需要加密强随机数,使用 Random() 比使用 Random.secure() 是否有优势?

mysql - 选择两个没有连接的表mysql

php - 如何使用 Zend Framework 2 在模型中设置 2 个表名

sql - postgres 中 over 子句内的 Where 子句