Das Problem, das Sie haben, ist, dass die Schlüssel für die order by
nicht jede Zeile eindeutig definieren. Insbesondere wird "khar" für die meisten Zeilen wiederholt (Ihre Ergebnisse legen nahe, dass Sie eine Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung verwenden).
In SQL-Datenbanken ist die Sortierung nicht stabil. Bei einer stabilen Sortierung wird die ursprüngliche Reihenfolge der Werte mit demselben Schlüssel beibehalten. Da die Sortierung nicht stabil ist, können die Ergebnisse - für identische Schlüssel - in beliebiger Reihenfolge ausgegeben werden.
Warum ist die Sorte nicht stabil? Das ist im Nachhinein leicht. SQL-Tabellen und Ergebnismengen stehen für ungeordnete Sets. Es gibt keine anfängliche Reihenfolge, daher ist die Sortierung nicht stabil.
Der normale Weg, dies zu beheben, ist eine eindeutige ID als der letzte Schlüssel in der order by
: order by address, id
. Mit Ihren Daten ist es jedoch unklar, was der eindeutige Schlüssel ist.
Beide sind Ergebnisse im Einklang mit den Garantien produzieren, die Sie * * in Ihrem 'ORDER BY' angefordert. Wenn Sie stärkere Garantien wünschen, * müssen * Sie sie anfordern, indem Sie zusätzliche Spalte (n) oder Ausdrücke zu diesem 'ORDER BY' hinzufügen. –
Dies ist ein sehr gutes Beispiel, dass es ** absolut keine implizite Sortierreihenfolge gibt ** Jeder Aufruf kann mit einer anderen Reihenfolge kommen, solange Ihre Spalten für 'ORDER BY' in ihren kombinierten Werten nicht 'UNIQUE' sind. – Shnugo
... und was ist deine Frage? – Thinkeye