SELECT myID FROM mytable ORDER BY RANDOM() liMIT 1;
它的工作,但它真的很慢…有另一种方式来进行查询,或直接的方式来选择一个随机的行没有读所有的表?顺便说一句’myID’是一个整数,但它可以是一个空字段。
谢谢
您可能想要尝试OFFSET,如SELECT myID FROM mytable OFFSET floor(random()* N)liMIT 1;
N是mytable中的行数。你可能需要先做一个SELECT COUNT(*)来计算出N的值。
更新(由Antony Hatchkins)
你必须在这里使用地板:
SELECT myID FROM mytable OFFSET floor(random()*N) liMIT 1;
考虑一个2行的表; random()* N产生0 <= x < 2和例如SELECT myID FROM mytable OFFSET 1.7 liMIT 1;返回0行,因为隐式取整为最接近的int。
总结以上是内存溢出为你收集整理的postgresql – 快速随机行选择在Postgres全部内容,希望文章能够帮你解决postgresql – 快速随机行选择在Postgres所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)