Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O MySQL exibe os resultados em ordem alfabética, mas mostra um item específico antes da lista ordenada alfabética


basta fazer uma ordem condicional by com uma instrução case assim

PERGUNTA:

SELECT * 
FROM $tableName 
GROUP BY primary_category
ORDER BY 
    CASE primary_category WHEN 'USA' THEN 1 ELSE 2 END ASC,
    primary_category ASC

EDITAR:


se você quiser ordenar por vários campos primeiro e depois o resto, você pode fazer assim.
SELECT * 
FROM $tableName 
GROUP BY primary_category
ORDER BY 
    CASE primary_category 
      WHEN 'USA' THEN 1 --#-- 1 for usa
      WHEN 'China' THEN 2 --#-- 2 for china
      ELSE 3 END ASC, --#-- 3 for anything else
    primary_category ASC