2010-02-12 9 views
1

Supposons que j'ai une liste de produits, et chacun a un prix. Je souhaite montrer le produit le plus cher, et si 2 produits ou plus cravate, alors je souhaite commander par leur nom. Faire cela ne semble pas produire les résultats que je veux:MySQL: Ordre par 2 champs

ORDER BY cost DESC, product_name 

Quelle est la syntaxe que je cherche?

+2

Il semble que vous avez la syntaxe correcte. Êtes-vous sûr que le premier résultat produit des doublons? – jsmith

+2

Votre syntaxe me va bien. Quel résultat voyez-vous? –

+2

pouvez-vous publier des résultats de requête qui illustrent cette clause ne fonctionne pas comme prévu? –

Répondre

4

où est le problème?

ORDER BY cost DESC, product_name 

ordonnera par cost desc puis par product_name asc. Quel type de comportement inattendu éprouvez-vous?

6

Cela fonctionne très bien:

use test; 

create table products (cost decimal(15,2), product_name varchar(50)); 

insert into products values (14.50, 'b product'); 
insert into products values (14.50, 'a product'); 
insert into products values (15.50, 'c product'); 

select * from products order by cost desc, product_name 

Retours:

15.50, 'c product' 
14.50, 'a product' 
14.50, 'b product'