以下のクエリは私を産んでいます。単純なクエリですが、where句でエラーが発生します。
注文テーブルから注文が遅れるのを取得しようとしています。
SELECT * FROM orders where delayed='Y'
ここで何が問題になっていますか?
DELAYED
mysqlの予約語です。列名として使用する場合は、backticks( `)で囲みます
以下を試してください:
SELECT * FROM orders WHERE `delayed`='Y'
DELAYED
はMySQLキーワード(のようにINSERT DELAYED
)であるため、「遅延」列をバッククォートでラップする必要があります。
SELECT * FROM orders where `delayed`='Y'
これらはアポストロフィではなく、バックティックであることに注意してください。
これを試して:
SELECT * FROM orders where `delayed`='Y'
バッククォートオプションは機能し、スペースを含むフィールド名でも機能しますが、可能であればそのようなテーブル名の使用を避けるのが私の謙虚な意見です。バックティック自体のせいではなく、まったく無害ですが、慣例のせいです。予約語は識別子として使用されることを意図していません。なぜなら...それらは予約されているからです!
乾杯!