PostgreSQL - 随机排序,但首先是NULL

时间:2017-01-12 11:07:17

标签: postgresql

我有一个查询,它从表中取出所有行,并与我正在更新的另一个表连接。另一个表有一些已经检查过的项目(这些项目获得了一个值),还有一些尚未检查过。我试图实现一种更新所有记录的方法,但要确保尽快对任何NULL进行排序。我有以下查询:

SELECT * FROM posts
LEFT JOIN post_stats
ON post_stats.post_id = posts.id
ORDER BY RANDOM() NULLS FIRST LIMIT 10

但是,这是随机排序的。有没有办法随机订购所有内容,但是首先显示任何NULL?

1 个答案:

答案 0 :(得分:0)

请注意,您甚至不能在查询中指定哪个列可以包含NULL。这表明出现了问题。

以下查询(替换为您需要的内容)应该做您想做的事。

SELECT *
FROM posts
LEFT JOIN post_stats ON post_stats.post_id = posts.id
ORDER BY <YOUR_COLUMN> IS NOT NULL, RANDOM()
LIMIT 10;