1

以下のクエリは私を産んでいます。単純なクエリですが、where句でエラーが発生します。

注文テーブルから注文が遅れるのを取得しようとしています。

SELECT * FROM orders where delayed='Y'

ここで何が問題になっていますか?

4

4 に答える 4

6

DELAYEDmysqlの予約語です。列名として使用する場合は、backticks( `)で囲みます

以下を試してください:

SELECT * FROM orders WHERE `delayed`='Y'
于 2012-04-20T23:37:40.160 に答える
2

DELAYEDはMySQLキーワード(のようにINSERT DELAYED)であるため、「遅延」列をバッククォートでラップする必要があります。

SELECT * FROM orders where `delayed`='Y'

これらはアポストロフィではなく、バックティックであることに注意してください。

于 2012-04-20T23:37:37.790 に答える
1

これを試して:

SELECT * FROM orders where `delayed`='Y'
于 2012-04-20T23:38:22.397 に答える
1

バッククォートオプションは機能し、スペースを含むフィールド名でも機能しますが、可能であればそのようなテーブル名の使用を避けるのが私の謙虚な意見です。バックティック自体のせいではなく、まったく無害ですが、慣例のせいです。予約語は識別子として使用されることを意図していません。なぜなら...それらは予約されているからです!

乾杯!

于 2012-04-20T23:44:50.990 に答える