如何为特定列选择具有随机非空值的第一个记录

时间:2018-04-25 22:25:11

标签: postgresql random

我参与了以下问题并最终得到了答案。想与任何可能需要的人分享。

我需要从我的表中选择id列的随机但非空值的第一条记录。 id列的值不是后续的,所以我需要选择一个存在的随机ID。

例如下表:

CREATE TABLE randomValue
(id int)

INSERT INTO randomValue 
VALUES (generate_series(1, 10))

SELECT * FROM randomValue

DELETE FROM randomValue WHERE id IN 
(SELECT id FROM randomValue WHERE id IN (2, 5, 7))

我需要一个选择具有现有id值的随机记录的查询。

1 个答案:

答案 0 :(得分:0)

解决方案如下:

SELECT * FROM randomValue rv
 WHERE EXISTS (SELECT rv1.id
  FROM randomValue rv1
  WHERE rv1.id = rv.id
 )
  OFFSET floor(random()* (SELECT Count(*) from randomValue)) LIMIT 1