5

order by クエリを実行しようとすると、ORDER BY 'order' DESC で構文をチェックするようにというエラーが常に表示されるのはなぜですか?

これが私のクエリです:

SELECT * FROM posts ORDER BY order DESC;

私は何を間違っていますか?

4

3 に答える 3

9

orderは SQL の予約語です。大文字と小文字は関係ありません。識別子として使用する場合は、引用符で囲む必要がありますMySQL 予約語のドキュメントから:

SELECT、DELETE、または BIGINT [または ORDER] などの特定の単語は予約されており、テーブルや列の名前などの識別子として使用するには特別な処理が必要です。

従来の MySQL の引用:

SELECT * FROM posts ORDER BY `order` DESC;

適切な (ANSI) SQL 引用[order](一部のデータベースも同様にサポート):

SELECT * FROM posts ORDER BY "order" DESC;

将来、このような紛らわしい問題を避けるために、列の名前を変更することを検討しますが.

于 2012-04-11T02:18:02.900 に答える
2

Order は予約済みのキーワードです。

試す、

SELECT * FROM posts ORDER BY `order` DESC;
于 2012-04-11T02:18:34.223 に答える
1

列名はorderキーワードです。これを行う必要があります:

SELECT * FROM posts ORDER BY `order` DESC;
于 2012-04-11T02:18:43.817 に答える