webentwicklung-frage-antwort-db.com.de

MySQL-Reihenfolge in mehreren Spalten

Ich versuche diese Abfrage in aufsteigender Reihenfolge auszuführen:

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

Ich brauche zwei Spalten in aufsteigender Reihenfolge, aber die obige Abfrage gibt Ergebnisse mit nur einer Spalte in ASC-Reihenfolge zurück.

11
user1135693

In aufsteigender Reihenfolge ist Standard für die meisten (wenn nicht alle) DBMS's, also ist Ihre Anweisung in dieser Hinsicht eine Art weird , aber Sie können trotzdem eine Reihenfolge angeben jede einzelne Spalte durch Hinzufügen des Spezifizierers ASC oder DESC.

Ihre Aussage würde dann werden

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

Bearbeiten

Wie von @Arvo & @Dems erwähnt, sortieren Sie derzeit first nach title und nach identischen Titeln nach project_index. Wenn Sie Ihren project_index zuerst sortieren möchten, müssen Sie ihn zuerst in die ORDER BY-Klausel einfügen.

Ihre Aussage wird dann

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

da ASC die Standard-Sortierreihenfolge ist, können Sie sie zusammen weglassen

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

Wenn Sie mysql verwenden, überprüfen Sie this out.

Wie sie dort sagen, können Sie SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC; verwenden.

4
Ivaylo Petrov

ORDER BY Titel ASC, Projektindex ASC;

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

UND Sie können weitere Spalten wie ORDER BY col1 ASC, col2 ASC, col3 DESC; hinzufügen.

3
IRSHAD

Versuche dies: 

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

Sie versuchen, beide Spalten in aufsteigender Reihenfolge zu sortieren. In MySQL können Sie mehrere Abfragen in einer Abfrage verwenden. Die Vorliebe für die Order by ist hier jedoch sehr wichtig. Der erste bekommt die größte Präferenz und der nächste die zweite Präferenz.
Das heißt, Ihre Frage lautet 

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

Wo, Reihenfolge nach Titel erhielt erste Präferenz. Das mysql ordnet zunächst die Spalte "Titel" in aufsteigender Reihenfolge an und zeigt das Ergebnis an. Dann wird nur die Spalte 'project_index' bestellt. Sie können also keine Antwort bekommen, wie Sie möchten.

0
php