web-dev-qa-db-fra.com

Ordre ascendant de plusieurs colonnes MySQL

J'essaie d'exécuter cette requête par ordre croissant:

SELECT title,project_index 
FROM projectdetail  
WHERE project_index BETWEEN 1 AND 6 
ORDER BY title, project_index ASC;

J'ai besoin de deux colonnes dans l'ordre croissant, mais la requête ci-dessus renvoie les résultats avec une seule colonne dans ASC.

11
user1135693

L'ordre croissant est le valeur par défaut pour la plupart (si ce n'est tous) afin que votre déclaration soit une sorte de bizarre à cet égard, vous pouvez néanmoins spécifier un ordre pour chaque colonne en ajoutant le spécificateur ASC ou DESC.

Votre déclaration deviendrait alors

SELECT  title
        , project_index 
FROM    projectdetail 
WHERE   project_index BETWEEN 1 AND 6 
ORDER BY 
        title ASC
        , project_index ASC

Éditer

Comme mentionné par @Arvo & @Dems, vous triez actuellement premier sur title et pour des titres identiques sur project_index. Si vous souhaitez que votre project_index soit trié en premier, vous devez d'abord le placer dans la clause ORDER BY.

Votre déclaration devient alors

SELECT  title
        , project_index 
FROM    projectdetail 
WHERE   project_index BETWEEN 1 AND 6 
ORDER BY 
        project_index ASC
        , title ASC

et parce que ASC est l'ordre de tri par défaut, vous pouvez les omettre complètement.

SELECT  title
        , project_index 
FROM    projectdetail 
WHERE   project_index BETWEEN 1 AND 6 
ORDER BY 
        project_index
        , title
26
Lieven Keersmaekers

Si vous utilisez mysql, vérifiez this out.

Comme on dit là-bas, vous pouvez utiliser SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

4
Ivaylo Petrov

ORDER BY titre ASC, index_projet ASC;

 SELECT title,project_index 
 FROM projectdetail  
 WHERE project_index BETWEEN 1 AND 6 
 ORDER BY title ASC, project_index ASC;

ET vous pouvez ajouter plus de colonnes comme ORDER BY col1 ASC, col2 ASC, col3 DESC;

3
IRSHAD

Essaye ça: 

SELECT title, project_index 
FROM projectdetail  
WHERE project_index BETWEEN 1 AND 6 
ORDER BY project_index, title;
0
Saharsh Shah

Vous essayez de trier les deux colonnes par ordre croissant. Dans mysql, vous pouvez utiliser plusieurs commandes dans une requête. Mais la préférence pour la commande par est très important ici. Le premier obtient le plus de préférence et le suivant le second.
Cela signifie, votre requête est 

SELECT title,project_index FROM projectdetail  
    WHERE project_index BETWEEN 1 AND 6 ORDER BY title, project_index ASC;

Où, l'ordre par titre a la première préférence. Le mysql ordonnera d'abord la colonne 'title' dans l'ordre croissant et affichera le résultat. Alors seulement il commandera la colonne 'project_index'. Donc, vous ne pouvez pas obtenir la réponse que vous voulez.

0
php