sql选择n个随机组并返回所有记录

1cklez4t  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(508)

我似乎无法找到一个解决这个确切问题的方法,如果不将两个或更多的查询通过操作链接在一起(我以前在postgresql中尝试过一次随机抽样 cur.execute("select distinct group from data where random() < {0}".format(rand_coef)) ,但我无法将结果数组组合到单个查询中,也无法指定确切的n值。)
假设的数据集和查询如下:
假设我想从下面的数据中得到n=3个随机组。

  1. id, group, value
  2. 1,a,23
  3. 1,a,3
  4. 1,b,2
  5. 1,a,432
  6. 1,b,123
  7. 1,d,23
  8. 1,d,11
  9. 1,c,23
  10. 1,c,234
  11. 1,a,223
  12. 1,c,32

查询的一个示例结果是n=3个随机组(即b、c、d):

  1. id, group, value
  2. 1,b,2
  3. 1,b,123
  4. 1,d,23
  5. 1,d,11
  6. 1,c,23
  7. 1,c,234
  8. 1,c,32

这是怎么回事?

b4lqfgs4

b4lqfgs41#

一种方法是:

  1. select t.*
  2. from t join
  3. (select group
  4. from t
  5. group by group
  6. order by random()
  7. limit 3
  8. ) g
  9. on t.group = g.group;

请注意 group 对于列来说是一个非常糟糕的名称,因为它是一个sql关键字。

相关问题