Mysql
 sql >> Database >  >> RDS >> Mysql

Come definire un ordine personalizzato nella clausola ORDER BY?

Usa la funzione CAMPO:-

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

MODIFICA - Se non viene trovato, restituirà 0, quindi se vuoi che 2 valori vengano ordinati prima, possibilmente hai solo quei 2 nella funzione ma invertiti e ordinati in modo decrescente.

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

Questo metterà prima la categoria 1, poi la categoria 67, seguita da tutte le altre