Esta é uma tabela de exemplo:
name | cat
----------
hugo | sal
bob | mgr
mike | dev
jeff | mgr
john | dev
Ambos name
e cat
ser Varchar.
cat
reflete uma categoria para esses nomes, mas gosto de atribuir uma prioridade a eles, seguida de uma consulta para listar todos eles, ordenados por essa prioridade.
Quais são as formas possíveis? Eu poderia extrair cat
para uma segunda tabela, construir uma chave estrangeira etc. Mas dado que meu aplicativo é muito simples e a estrutura pode ser inalterável: Quais possibilidades eu tenho de listar os mgr
nomes primeiro, seguidos pelos dev
nomes, seguidos pelos sal
nomes ?
Supondo que você não possa alterar sua estrutura, você pode usar uma instrução CASE em seu ORDER BY:
Se você puder alterar sua estrutura, no entanto, poderá criar uma
Category
tabela incluindo o código da categoria e uma classificação, juntar sua tabela de amostra àCategory
tabela e classificar por essa classificação.Essa estrutura me ajuda no Wordpress. Por exemplo, para selecionar postagens personalizadas primeiro: pôster e projeto são personalizados SELECT
post_type
FROMwp_posts
ORDER BY (case whenpost_type
= 'poster' then 1 whenpost_type
= 'project' then 2 else 3 end)