0

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

4

2 回答 2

2

要选择前 1000 个结果,您可以在查询中使用限制

SELECT field1 FROM table1 ORDER BY id Limit 1000;

结果将是 python 中的列表。所以你可以使用 python random模块对结果列表进行操作。

于 2013-07-02T14:17:48.533 回答
1

如果性能不是问题

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

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

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

于 2013-07-02T16:37:39.647 回答