ChrisB: MySQL: CASE im ORDER BY

Beitrag lesen

Hi,

lass einfach die einfachen anführungszeichen in der CASE anweisung weg, damit sie nicht als string zählen, sondern die werte der spalten genommen werden.

Da spuckt MySQL eine Fehlermeldung aus. Sonst wäre diese Lösung logisch gewesen.
Es funkktioniert nur mit den Spaltennamen (id und name) nicht aber mit ASC und DESC.

Da du (laut Beispiel) egal welche Spalte gewaehlt wird in die gleich "Richtung", ASC, sortieren willst, kannst du dir auch in der Spaltenliste nach SELECT Pseudo-Spalten selektieren lassen, und die dann zum Sortieren hernehmen.

SELECT ...,
  IF(id<=10, 0, 1) AS nameoderid,
  IF(id<=10, id, name) AS sortiertwert
FROM cugroup ORDER BY nameoderid ASC, sortiertwert ASC

Das erste Sortierkriterium sorgt dafuer, dass alle Werte mit id<=10 vor den restlichen einsortiert werden, und das zweite dann innerhalb dieser Sortierung noch mal fuer die Sortierung jeweils nach id bzw. name.

MfG ChrisB

--
„This is the author's opinion, not necessarily that of Starbucks.“