Je sais que le titre n'explique pas très bien ma question (si quelqu'un peut trouver un meilleur titre alors s'il vous plaît l'éditer). Voici ce que je veux faire, dire que j'ai le tableau suivant:Puis-je commander par plusieurs colonnes et en quelque sorte garder la commande liée entre les colonnes dans MySQL?
id | a | b | c
------------------
1 | 3 | 3 | 3
2 | 20 | 40 | 30
3 | 40 | 30 | 10
4 | 30 | 10 | 15
5 | 10 | 15 | 6
6 | 15 | 6 | 20
ceci est une version légèrement tronquée, j'ai quelques colonnes de tri, mais le principe que les données & ma question est la même.
Ce que je voudrais est d'obtenir les données ordonnées de la manière suivante:
- La ligne la plus haute valeur dans la colonne une
- La ligne la plus haute valeur dans la colonne b
- la rangée la plus haute valeur dans la colonne c
- Suivi par toutes les lignes restantes ordonnées par leur valeur dans la colonne c
Ainsi, le jeu de résultats ressemblerait à ceci:
id | a | b | c
------------------
3 | 40 | 30 | 10
2 | 20 | 40 | 30
6 | 15 | 6 | 20
4 | 30 | 10 | 15
5 | 10 | 15 | 6
1 | 3 | 3 | 3
Faire un
SELECT id, a, b, c
FROM table
ORDER BY a DESC, b DESC, c DESC
Il est évident que me donne un ordre, puis b et enfin c, donc ce qui suit (qui est pas ce que je besoin):
id | a | b | c
------------------
3 | 40 | 30 | 10
4 | 30 | 10 | 15
2 | 20 | 40 | 30
6 | 15 | 6 | 20
5 | 10 | 15 | 6
1 | 3 | 3 | 3