【发布时间】:2017-02-25 14:55:15
【问题描述】:
这是我的基本设置的模拟:每个人可以拥有多个财产。
人表:
id name
1 Carl
2 Sam
3 Tom
4 Jack
财产表:
possession personId
car 2
shoes 2
shovel 2
tent 3
matches 3
axe 4
我想生成属于随机一组人的一组随机财产,每人一个财产。
因此,在非 SQL 世界中,我将生成一组 N 个随机人,然后为该组中的每个人随机选择一个财产。但是如何在 SQL 语义中实现呢?
我想获得一个随机的财产样本,其中有一些变化:
SELECT * FROM Posessions WHERE 0.01 >= RAND()
然后过滤掉重复的人,但这样不好,最终会偏向拥有大量财产的人,我希望每个人都有平等的机会被选中。
有解决这个问题的规范方法吗?
附: Person 包含约 50000 个实体,Possession 包含约 2500000 个实体,但我只需要执行一次此采样,因此可能会有些慢。
【问题讨论】:
标签: sql sql-server random