2017-01-12 9 views
0

私はテーブルからすべての行を取り出し、更新している別のテーブルと結合します。もう1つのテーブルには、チェックされたアイテム(これらは値を取得する)と、まだチェックされていないアイテムがあります。私はすべてのレコードを更新する方法を実装しようとしていますが、NULLができるだけ早くソートされるようにしてください。私は次のクエリを持っています: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

'random()'は決して 'NULL'値を返さないので、' ORDER BY RANDOM()NULLS FIRST'は実際には意味がありません。 –

答えて

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; 
関連する問題