2017-01-12 1 views
0

Ich habe eine Abfrage, die alle Zeilen aus einer Tabelle nimmt, und verbindet sich mit einer anderen Tabelle, die ich aktualisiere. Die andere Tabelle enthält einige Elemente, die überprüft wurden (diese erhalten einen Wert), und einige, die noch nicht überprüft wurden. Ich versuche, eine Möglichkeit zu implementieren, alle Datensätze zu aktualisieren, aber stellen Sie sicher, dass alle Nullwerte so schnell wie möglich sortiert werden. Ich habe folgende Abfrage:PostgreSQL - nach dem Zufallsprinzip, aber mit Null zuerst

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

Allerdings ist dies alles nach dem Zufallsprinzip bestellen. Gibt es eine Möglichkeit, alles nach dem Zufallsprinzip zu sortieren, aber alle NULLs werden zuerst angezeigt?

+1

'random()' wird niemals einen 'NULL'-Wert zurückgeben, so dass 'ORDER BY RANDOM() NULLS FIRST' nicht wirklich sinnvoll ist. –

Antwort

0

Beachten Sie, dass Sie nicht einmal angeben, welche Spalte NULL in Ihrer Abfrage enthalten kann. Dies ist ein Indikator dafür, dass etwas schief läuft.

Die folgende Abfrage (ersetzen mit was Sie brauchen) sollte tun, was Sie wollen.

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