2013-07-02 33 views
0

您好,我有一个包含270万条记录的postgresql“TABLE1”。每条记录都有一个可能为空或可能有数据的字段“FIELD1”。我想要一个SELECT语句或方法a)返回TABLE1的前1000个结果,其中FIELD1为空,并b)随机选择一个记录返回到python变量。帮帮我???Psycopg2 - 返回前1000个结果并随机选择一个

+2

这个问题可能涉及:http://stackoverflow.com/questions/8674718/best-way-to-select-random-rows- postgresql – svk

+0

您需要定义:“空”,“第一”,您的要求(速度?重复使用?)。请提供一个表格定义。 –

回答

2

对于选择第一1000结果您可以使用您的查询

SELECT field1 FROM table1 ORDER BY id Limit 1000; 

结果限制将是一个Python列表。因此,您可以使用python random模块对结果列表进行操作。

+1

postgresql如何选择1000?它是按照主键号码的顺序吗?如果是,我怎样才能获得1000条随机记录? – user2104778

+0

您也可以添加ORDER BY子句来查询。我编辑了我的答案。默认顺序必须是主要ID,但并不总是保证被订购。 –

1

如果性能是不是一个问题

SELECT * 
FROM (
    SELECT * 
    FROM tbl 
    WHERE field1 IS NULL 
    ORDER BY id   --?? unclear from question 
    LIMIT 1000 
    ) sub 
ORDER BY random() 
LIMIT 1; 

这将返回1个完全随机行从 “第一” 1000个空行。
“空”意思是NULL,而“第一”意思是最小的id

如果性能是一个问题,你需要很多更具体的
如果您的情况相匹配,帮助这个相关答案可能:
Best way to select random rows PostgreSQL

相关问题