为什么我在 postgres 中使用随机函数在 select 中得到几条记录?
Why do I get several records in select using random function in postgres?
这是我的查询:
SELECT id, geom from lars.punkt where id = (floor(random () * 99))::integer;
这是结果:
id geom
40 "010100000000000000000010400000000000000000"
80 "010100000000000000000020400000000000000000"
88 "010100000000000000000020400000000000002040"
这是怎么回事?我也可以得到 2 行或零行。
我期待 1 行。
是数据库"slow"还是代码?
I am expecting 1 line.
每行调用随机函数,这就是为什么您有零个、一个或多个匹配项。 CROSS JOIN
可用于生成在 WHERE
条件下使用的单个随机值:
SELECT id, geom
from lars.punkt
CROSS JOIN(SELECT (floor(random () * 99)::integer)) s(c) --generate single random value
where id = s.c;
这是我的查询:
SELECT id, geom from lars.punkt where id = (floor(random () * 99))::integer;
这是结果:
id geom
40 "010100000000000000000010400000000000000000"
80 "010100000000000000000020400000000000000000"
88 "010100000000000000000020400000000000002040"
这是怎么回事?我也可以得到 2 行或零行。
我期待 1 行。
是数据库"slow"还是代码?
I am expecting 1 line.
每行调用随机函数,这就是为什么您有零个、一个或多个匹配项。 CROSS JOIN
可用于生成在 WHERE
条件下使用的单个随机值:
SELECT id, geom
from lars.punkt
CROSS JOIN(SELECT (floor(random () * 99)::integer)) s(c) --generate single random value
where id = s.c;