Vinzenz Mai: MySQL nach mehreren Feldern übergreifend sortieren.

Beitrag lesen

Hallo suit,

SELECT CONCAT (bar, foo) as baz ORDER BY baz

Folgendes ist kürzer und geht auch, aber logisch dasselbe (wenn man von der Ausgabe absieht):
SELECT id ORDER BY CONCAT(bar, foo)

Dein Beispiel ist nicht ausreichend spezifiziert. Sprich: es gibt keinen Fall, wo Deine Spezialsortierung greift. Außerdem sind bestimmte Randbedingungen nicht berücksichtigt, die Du nicht speziell erwähnt hast.

Zusammengefasst: für Deine (unzureichende) Problembeschreibung ist dies keine hinreichende Lösung.

a) Aus Deinem Lösungsansatz entnehme ich:

id | bar | foo
---+-----+----
 1 | aaa | bb
 2 |  aa | c
 3 |   a | aaaab

möchtest Du in der Reihenfolge

id | bar | foo
---+-----+------
 3 |   a | aaaab
 1 | aaa | bb
 2 |  aa | c

sortiert haben, weil die verketteten Inhalte so sortiert würden. Ist das richtig?

Wenn ja, musst Du berücksichtigen,

  • dass MySQL dafür keinen Index verwenden kann (AFAIR).
  • dass Deine Lösung voraussetzt, dass die Werte der Spalte "foo" *nicht* den
      Wert NULL annehmen dürfen.

Wenn nein? Dann gib eine bessere Problembeschreibung!

Freundliche Grüße

Vinzenz