如何在SQL中对列进行随机选择

如何在SQL中对列进行随机选择,sql,amazon-redshift,Sql,Amazon Redshift,我有一个红移的表,它有一个名为ID的列,其中有数百万个不同的条目。但是,每个ID可以跨行重复。我的表格示例如下: 身份证件 颜色 年龄 身高 A. 蓝色 12 24 A. 红色 3. 34 B 绿色 6. 26 B 蓝色 8. 22 C 白色 6. 34 您可以使用join并在子查询中选择适当的ID: select t.* from t join (select id from t group by id order by random()

我有一个红移的表,它有一个名为ID的列,其中有数百万个不同的条目。但是,每个ID可以跨行重复。我的表格示例如下:

身份证件 颜色 年龄 身高 A. 蓝色 12 24 A. 红色 3. 34 B 绿色 6. 26 B 蓝色 8. 22 C 白色 6. 34 您可以使用join并在子查询中选择适当的ID:

select t.*
from t join
     (select id
      from t
      group by id
      order by random()
      limit 1000000
     ) t1000000
     on t1000000.id = t.id;
你可能会发现避免这种情况会更快。例如,如果您想要1%的ID样本,请改为:

select t.*
from t join
     (select id
      from t
      group by id
      having random() < 0.01
     ) t1000000
     on t1000000.id = t.id
您可以使用join并在子查询中选择适当的ID:

select t.*
from t join
     (select id
      from t
      group by id
      order by random()
      limit 1000000
     ) t1000000
     on t1000000.id = t.id;
你可能会发现避免这种情况会更快。例如,如果您想要1%的ID样本,请改为:

select t.*
from t join
     (select id
      from t
      group by id
      having random() < 0.01
     ) t1000000
     on t1000000.id = t.id

我不知道红移,所以请原谅我的无知,但你能做一个类似以下的子选择:

    SELECT TOP 1
           ID
          ,CAST(RANDOM() * 100 As int) As rand_int
    FROM tbl_name
    ORDER BY rand_int

使用该选项,您可以基于ID列内部连接主表吗?

我不知道红移,请原谅我的无知,但您可以执行如下子选择:

    SELECT TOP 1
           ID
          ,CAST(RANDOM() * 100 As int) As rand_int
    FROM tbl_name
    ORDER BY rand_int

使用它,可以基于ID列内部连接主表?

如果ID不是唯一的,它真的是ID吗?听起来更像外键如果一个ID不是唯一的它真的是一个ID吗?听起来更像外键