1

次のクエリを実行すると:

select * from mysql.user order by abcdef;

MySQL は次のエラーをスローします。

エラー 1054 (42S22): 'order 句' の列 'abcdef' が不明です

次の同様のクエリを実行すると:

select * from mysql.user order by "abcdef";

MySQL はクエリを実行し、order by 句を無視します (mysql.user テーブルには「abcdef」という列がないため)。

これは MySQL のバグですか? 句が引用符で囲まれている場合、なぜ order by がサイレントに失敗するのですか? 存在しない列で order by を実行する場合、エラー メッセージは適切ではないでしょうか?

4

3 に答える 3

4

無視せず、列ではなく文字列「abcdef」で並べ替えます。それはあなたが求めることを正確に行います:任意の文字列による順序付け(おそらく何もしません)。

ほとんどの RDBMS は定数による順序付けを受け入れませんが (意味がありません)、MySQL は受け入れます。

于 2010-11-19T16:56:56.183 に答える
3

引用符を使用していない場合、存在しない列名を参照していると見なされます。

これは正しい機能です

于 2010-11-19T16:56:27.170 に答える
-1

注文は、注文するフィールドを想定しており、昇順の場合はその横にascを配置し、降順の場合は次のようにdescを配置します。

SELECT *
  FROM mysq.user
 ORDER BY username ASC
于 2010-11-19T16:58:53.573 に答える