2016-06-22 6 views
2

並べ替えリストにnullの値を配置する場所を指定する方法はありますか?ORDER BY nullの位置

私は降順で並べ替えたいリストがあります。私はdate=nullのノードをリストの最後に含めたい。 Neo4jから

ORDER BY date DESC NULLS LAST

:結果セットをソートする場合

、NULLは常に上昇のため 結果セットの最後に来るCYPHERでこのような何かを探してい

並べ替え、最初に降順を行うとき ソート。

http://neo4j.com/docs/developer-manual/current/#order-by-ordering-null

+0

ヌルではない場所を選択し、それを注文してから結合を選択してください。ちょっと言い方だけど... –

+0

私はそれが不必要にコストがかかるかもしれない。合計で約5000のうち、ヌルとしてdateプロパティを持つノードがいくつかあります。基本的には、最後のページに行く人だけがそれらを見るでしょう。 – lifwanian

答えて

2

次を使用することができます日付BY ORDERは、あなたがCOALESCEの結果で並べ替えることができNULL DESC

+0

'ORDER BY日付IS NOT NULL DESC'を使用しました。ありがとう! – lifwanian

+3

@lifwanianこれは動作しません。値がNULLの行は最後ですが、他の行は降順でソートされません。 –

+1

の場合は、ORDER BY日付IS NOT NULL DESC、日付DESCのように2番目の注文を設定することができます。それは実際にブール値で順序付けしています。したがって、nullを持つレコードはすべて1であり、他のレコードは0です。 –

2

です。

たとえば、我々は次のノードがあります。

MERGE (A1:Test {name:'a1'}) 
MERGE (A2:Test {name:'a2', date: 1}) 
MERGE (A3:Test {name:'a3', date: 2}) 
MERGE (A4:Test {name:'a4'}) 

を私たちは次のように並べ替えることができます。

MATCH (A:Test) 
RETURN A.name, 
     A.date 
ORDER BY 
     COALESCE(A.date, -1) DESC 
0

おそらく、あなたのORDER BYcoalesce()を使うのか?

ORDER BY coalesce(val, 0)