2017-11-13 20 views
0

私は以下の単純なSQLを持っています。これは私のMariaDBデータベースに対して実行されます。MariaDBのORDER BY句は昇順にソートされませんか?

予想される動作は、結果が 'day'でソートされていることです。昇順。ただし、実行すると、結果はDESCENDINGの順にソートされます。非常に奇妙な。

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 

私はの内側に、内側のクエリ、正しく作品BY外ORDER BYを ORDERをコメントアウトし、問題なく昇順順に結果をソートした場合。

私の問題は、内部ループ内のコードが生成されているため、内部のORDER BYを削除できないことです。

なぜMariaDBはこのように動作しますか?外側のORDER BYを変更して優先権を得る方法はありますか?

注:私は、MariaDBのバージョン使用しています:10.0.24-MariaDBので

+0

どうぞ試してください - 'count'と' day'は半予約語ですので、それらのスペルを変更してください。 –

+0

Rick Jamesに感謝します。残念ながら、私が名前を変更しても、その動作は変わりません。 –

+1

私はちょうど '編集'を見ています - 余分な(不要な)層を追加しました。 TomGは正しい答えを持っています。 –

答えて

0

を、私はそれを働きました。

(それは実際の行が返さ影響を与えない限り)MariaDBによると、SQL標準が尊重されるように、サブクエリのBY ORDERを必要としない:

https://mariadb.com/kb/en/library/why-is-order-by-in-a-from-subquery-ignored/

私は、ORDER BYを移動した場合非常に外側のクエリは、期待どおりに動作します。

関連する問題