我有用于采样50,000条随机记录的代码。即
SELECT * FROM Table1
SAMPLE 50000;
那行得通。但是,我真正想做的是对另一个表中的记录数进行采样。即
SELECT * FROM Table1
SAMPLE count(*) FROM Table2;
我得到一个错误。我究竟做错了什么?
答案 0 :(得分:2)
这不是像样本一样随机的,因此请记住这一点。但是也不会出现明显的模式,我相信它是由磁盘位置决定的(请不要在上面引用我的意思)。
SELECT *
FROM Table1
QUALIFY ROW_NUMBER() OVER
( PARTITION BY 1
ORDER BY 1
) <=
( SELECT COUNT(*)
FROM Table2
);
更好的方式
SELECT TMP.* -- Or list the columns you want with "rnd"
FROM ( SELECT RANDOM(-10000000,10000000) rnd,
T1.*
FROM Table1 T1
) TMP
QUALIFY ROW_NUMBER() OVER
( ORDER BY rnd
) <=
( SELECT COUNT(*)
FROM Table2
);
答案 1 :(得分:-1)
SELECT TOP 50000 * FROM Table1 ORDER BY NEWID()