2017-11-13 1 views
0

Ich habe die folgende einfache SQL, die gegen meine MariaDB-Datenbank ausgeführt wird. Das erwartete Verhalten ist, dass das Ergebnis nach "Tag" ASCENDING sortiert wird. Bei der Ausführung werden die Ergebnisse jedoch in der Reihenfolge DESCENDING sortiert. Sehr eigenartig.MariaDB ORDER BY-Klausel sortiert nicht aufsteigend?

SELECT * 
FROM 
(
    SELECT `day`,`count` 
    FROM 
    (
     SELECT 
      DATE(`date`) AS `day`, 
      COUNT(*) as `count` 
     FROM `message` m 
     GROUP BY DATE(`date`) 
     ORDER BY `day` DESC, `count` DESC 
    ) AS q 
    ORDER BY `day` ASC 
) AS q 

Wenn ich die ORDER BY innerhalb die innere Abfrage auf Kommentar, die äußere ORDER BY Arbeiten korrekt und sortiert die Ergebnisse in aufsteigend um ohne Problem.

Das Problem, das ich habe, ist, dass der Code innerhalb der inneren Schleife Code generiert wird, so dass ich diese innere ORDER BY nicht entfernen kann.

Warum verhält sich MariaDB auf diese Weise? Gibt es eine Möglichkeit, die äußere ORDER BY so zu ändern, dass sie die Priorität verdient?

Hinweis: Ich bin mit MariaDB Version: 10.0.24-MariaDB

+0

Bitte versuchen Sie etwas - Da 'count' und' day' halb-reservierte Wörter sind, ändern Sie deren Schreibweise. –

+0

Danke Rick James. Leider, was auch immer ich ändere, bleibt das Verhalten gleich. –

+1

Ich sehe gerade die 'Bearbeitung' - Sie haben eine zusätzliche (unnötige) Ebene hinzugefügt. TomG hat die richtige Antwort. –

Antwort

Verwandte Themen