Permalänk
Medlem

MySQL: Sortera med undantag?

Jag använder MySQL med PHP. Kan man sortera med undantag? Alltså nånting motsvarande

SELECT * FROM categories SORT BY name ASC men den med id=1 ska alltid vara sist

?

Så att man skulle få, exempelvis, följande:

id - name
2 - Kategori B
7 - Kategori C
4 - Kategori D
1 - Kategori A

Permalänk
Medlem

Om det är kategorier och underkategorier så kan du ju ha ett fält som talar om djupet i strukturen om du förstår vad jag menar.

Permalänk
Medlem

du kan ju lägga till ett till fält, som id-fältet, fast så som du vill ha det.

Permalänk
Medlem

Det är inte underkategorier, utan handlar helt enkelt om att kategorin med id=1 ska hamna sist, och de övriga sorteras alfabetiskt.

Det där med lägga till ett fält är kanske något, men det vore bättre om det gick att göra med de fält jag redan har.

Permalänk
Medlem

SELECT * FROM categories SORT BY name DESC AND id ASC

Kanske inte precis vad du var ute efter, men den rad med id=1 borde ju hamna längst ned i alla fall.

Visa signatur

Old math teachers never die, they just tend to infinity.

Permalänk
Medlem

SELECT * FROM categories ORDER BY IF(id=1,"zzzz",name)

alternativt

SELECT * FROM categories WHERE id<>1 ORDER BY name UNION SELECT * FROM categories WHERE id=1

Permalänk
Medlem

Tack så jättemycket, Tuor; det fungerade.

Jag tillämpar den sista eftersom den känns mer läsbar och lite mer robust, om man nu skulle lägga till kategorin "ZZZZEBROR", eller vad som nu skulle sorteras efter "zzzz".

Jag fick först ett felmeddelande, men det ordnade sig när jag Googlat lite och lade till parenteser. De kanske behövdes för att jag hade med både UNION och ORDER, eller nåt sånt.

$query = "(SELECT * FROM wishlist_cats WHERE id<>1 ORDER BY name ASC) UNION (SELECT * FROM wishlist_cats WHERE id=1)";