2010-04-25 5 views
1

J'ai un resultset de let dit 10 résultats. 3 d'entre eux ont un type 'Poires', et les 3 suivants ont un type 'Pommes' et les trois suivants ont un type de 'Bananes'. Le dernier enregistrement a un type d '"équipement de compression" - sans rapport avec les fruits. Comment retourner cet ensemble de résultats (pour la pagination aussi) dans un ordre GROUPÉ que je spécifie SANS utiliser un facteur de tri inhérent comme ALPHABETA ou ID etc? J'ai tous les types à ma disposition avant d'exécuter le code afin qu'ils puissent être spécifiés. -à-direTri des résultats MySQL dans un ensemble de résultats

ID | Bananas 
ID | Bananas 
ID | Bananas 
ID | Apples 
ID | Apples 
ID | Apples 
ID | Pears 
ID | Pears 
ID | Pears 
ID | Squeezing Equipment 

Répondre

1

Utilisez une clause order by. Si vous voulez « Serrant Equipment » à venir dernière utilisation ceci:

ORDER BY CASE name 
    WHEN 'Bananas' THEN 1 
    WHEN 'Apples' THEN 2 
    WHEN 'Pears' THEN 3 
    WHEN 'Squeezing Equipment' THEN 4 
    END 
+0

serait ce travail: ORDER BY type = 'Bananes', nom = 'Pommes', nom = 'Poires', nom? (ou quelque chose de similaire) – InnateDev

+0

@InnateDev: Oui cela fonctionnerait, sauf qu'il donnerait les résultats dans l'ordre inverse de celui que vous voulez. Ou vous pourriez utiliser un CAS - J'ai mis à jour ma réponse. –

+0

une solution très polyvalente ne diriez-vous pas? – InnateDev

0

Cela triera tous les types qui ne sont pas Squeezing Equipment premier par ordre alphabétique:

select ID, Type 
from MyTable 
order by case when Type = 'Squeezing Equipment' then 1 else 0 end, Type 

Si vous avez plus d'un type non-fruits, vous pouvez le faire:

select ID, Type 
from MyTable 
order by case when Type in ('Squeezing Equipment', 'some other type') then 1 else 0 end, Type 
0

Ne pas un simple ORDER BY et GROUP BY atteindre cet objectif? Ou est-ce que je manque quelque chose?

SELECT ID, Type FROM TheFruityTable 
GROUP BY Type 
ORDER BY Type; 
+0

ce serait idéal, juste que la dernière commande par votre requête ordre alphabétique et je dois préciser par type ce qui vient en premier. C'est-à-dire que les bananes doivent précéder les pommes et ensuite les poires. – InnateDev

+0

Ah, je comprends maintenant. Pourquoi ne pas ajouter une autre table qui croise les types et spécifie un ordre de tri? –

Questions connexes