Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment définir une commande personnalisée dans la clause ORDER BY ?

Utilisez la fonction CHAMP :-

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

EDIT - S'il n'est pas trouvé, il renverra 0, donc si vous voulez que 2 valeurs soient triées en premier, ayez peut-être juste ces 2 dans la fonction mais inversées et triées par ordre décroissant.

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

Cela mettra la catégorie 1 en premier, la catégorie 67 ensuite, suivie de toutes les autres