大查询sql中两个表的group by id和random sample by id

x3naxklr  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(411)

我有两张结构相同的table:
表1

  1. id text var
  2. 1 "bla bla" 100
  3. 1 "blabla1" 30
  4. 2 "qweweqty" 0
  5. 2 etc...
  6. 7
  7. 3
  8. 3
  9. 1
  10. ..
  11. 100

表2

  1. id text var
  2. 101 "bla bla" 10
  3. 101 "bla1" 60
  4. 101 "bla" 5
  5. 103 etc...
  6. 102
  7. 103
  8. 102
  9. 110
  10. ..
  11. 200

我想根据id从表1和表2中随机抽取数据。所以基本上,从表1中随机抽取一个id,从表2中随机抽取一个id,从表1中随机抽取50个id,从表2中随机抽取50个id。你知道如何在大查询sql上做到这一点吗?
例如,我想从表1中得到3个ID,从表2中得到3个ID
从表1中随机选择ID 1、2、3,从表2中随机选择ID 101、110和103
结果表如下:

  1. id. text var
  2. 1. .. ..
  3. 1
  4. 2
  5. 2
  6. 3
  7. 3
  8. 1
  9. 101
  10. 101
  11. 101
  12. 103
  13. 103
  14. 110

因此,基本上,表1中id为1、2、3的任何观察和表2中id为101、103、110的任何观察都被选择并放在同一个表中:因此段落有两个:首先从表1中随机选择一定数量的id,然后从表2中随机选择一定数量的id,然后我从两个表中选择与这些id相对应的任何观察,并将它们连接到同一个表中

ulmd4ohb

ulmd4ohb1#

如果希望每个表中有50个ID,则可以使用子查询对其进行限制:

  1. select t1.*
  2. from t1 join
  3. (select distinct id
  4. from t1
  5. order by rand()
  6. ) ids
  7. on t1.id = ids.id
  8. union all
  9. select t2.*
  10. from t2 join
  11. (select distinct id
  12. from t2
  13. order by rand()
  14. ) ids
  15. on t2.id = ids.id

相关问题