我试图从表中获取15,000个ID的25个随机样本。而不是每次手动按下运行,我试图做一个循环。我完全理解的不是Postgres的最佳使用,但它是我拥有的工具。这是我到目前为止:
- for i in 1..25 LOOP
- insert into playtime.Meta_random_sample
- select i,ID
- from tbl
- order by random() limit 15000
- end loop
Procedural elements like loops不是sql语言的一部分,只能在程序语言函数或
DO
语句的内部使用,其中这些附加元素由相应的过程语言定义。默认为
PL/pgSQL,但
there are others。
使用plpgsql的示例:
- DO
- $do$
- BEGIN
- FOR i IN 1..25 LOOP
- INSERT INTO playtime.Meta_random_sample (col_i,col_id) -- use col names
- SELECT i,id
- FROM tbl
- ORDER BY random()
- LIMIT 15000;
- END LOOP;
- END
- $do$;
如果您需要优化性能,请考虑以下相关问题: