PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So bewahren Sie die Reihenfolge der Kinder, damit sie nach ihren Eltern erscheinen

Bei Ihrer letzten Abfrage haben Sie wirklich zwei Sorten in einer. Die Eltern können aufsteigend oder absteigend sortieren, aber die Kinder können nur aufsteigend sortieren.

Nachdem ich mir das angesehen habe, glaube ich, dass Sie mit so etwas eine Lösung finden können.

   order by case 
        when depth = 0
            then path
    /*
      secret function that always returns the
      right numbers regardless of whether or not the sort is ascending.
    */
        else XXX_function('DESC', path)
    end desc;

Ich glaube, die Logik ist vernünftig, aber Sie müssen herausfinden, wie Sie die Zahlen bei absteigenden Sortierungen ersetzen, da die Dinge "auf dem Kopf" stehen. (Vielleicht die Array-Positionen umkehren)