如何在SQL中对列进行随机选择
我有一个红移的表,它有一个名为ID的列,其中有数百万个不同的条目。但是,每个ID可以跨行重复。我的表格示例如下: 身份证件 颜色 年龄 身高 A. 蓝色 12 24 A. 红色 3. 34 B 绿色 6. 26 B 蓝色 8. 22 C 白色 6. 34 您可以使用join并在子查询中选择适当的ID:如何在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()
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吗?听起来更像外键