如何在另一个 table 中采样记录数?

How do I sample the number of records in another table?

我有代码可以对 50,000 条随机记录进行抽样。即,

  SELECT * FROM Table1
  SAMPLE 50000;

行得通。但是,我真正想做的是对不同 table 中的记录数进行采样。即,

  SELECT * FROM Table1
  SAMPLE count(*) FROM Table2;

我收到一个错误。我究竟做错了什么?

这不像样本那样是随机的,所以请记住这一点。但是也不会有明显的模式,我相信它是由磁盘位置决定的(不要引用我的话)。

    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
             );

SELECT TOP 50000 * FROM Table1 ORDER BY NEWID()