2009-01-27 4 views
1

Je commande une table:(MySQL) OrderBy Champ1 = 3, Champ2

Tout d'abord par Champ1 = 3 ensuite par Champ2 DESC

Je sais que je ne peux pas écrire OrderBy Champ1 = 3, Champ2 DESC

Alors, comment puis-je mettre en œuvre ce ??

À EXPLIQUER:

Disons que j'ai une table de livres. Je souhaite énumérer TOUS les livres dans la table. Je souhaite que les livres de 1990 apparaissent en haut, puis le reste des livres dans l'ordre alphabétique des titres.

+0

Je ne sais pas exactement ce que vous voulez dire, voulez-vous toutes les lignes où la valeur de Field1 est exactement 3 en haut, avant toutes celles où ce n'est pas 3? –

+0

Que voulez-vous dire, Field1 = 3? – cjk

Répondre

7

En fait, vous pouvez écrire la déclaration que vous dit que tu ne peux pas. En utilisant votre exemple de clarification:

SELECT * FROM Books ORDER BY (year = 1990) DESC, name 

« = année 1990 » sera « 1 » pour ceux où l'année est 1990, donc ceux qui iront au sommet.

+0

Fonctionne parfaitement, merci monsieur. –

1

C'est TSQL plutôt que MySQL, mais il devrait vous donner l'idée ...

(En supposant que je comprends votre question ...)

ORDER BY 
    CASE WHEN Field1 = 3 THEN 0 ELSE 1 END ASC, 
    Field2         DESC 
Questions connexes