Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie definiere ich eine benutzerdefinierte Reihenfolge in der ORDER BY-Klausel?

Verwenden Sie die FIELD-Funktion:-

SELECT *
FROM articles
WHERE article.category IN (1, 57, 67, 78)
ORDER BY FIELD(article.category, 1, 67, 78, 57)

BEARBEITEN - Wenn nicht gefunden, wird 0 zurückgegeben. Wenn Sie also 2 Werte zuerst sortieren möchten, haben Sie möglicherweise nur diese 2 in der Funktion, aber umgekehrt und absteigend sortiert.

SELECT *
FROM articles
WHERE article.category IN (1, 57, 67, 78)
ORDER BY FIELD(article.category, 67, 1) DESC

Dadurch wird Kategorie 1 zuerst gesetzt, Kategorie 67 danach, gefolgt von allen anderen