UNION
はMySQLの予約語です。エスケープされない限り、識別子として使用することはできません。
MySQLでは、識別子はバックティック文字で囲むことでエスケープすることができます。
キーワードFROMに続くトークンは、バックティック文字で囲まれているため、識別子として解釈されるため、最初の文が機能します。
トークンは予約語UNION
として解釈され、それは(MySQLはそれを許可しない場合。)MySQLはそれを期待されていない
スポットに現れるため、2番目の文は、構文エラーを投げていますMySQLリファレンスマニュアルから
抜粋:MySQLのSQLスタット内
バッククォート
識別子ementsは、特殊文字や予約語が含まれている場合、バックティック文字( `)を使用して引用符で囲む必要があります。たとえば、FOO#BARという名前のテーブルまたはSELECTという名前のカラムを参照するには、識別子を `FOO#BAR`と` SELECT`と指定します。バックティックは安全性を高めるため、プログラム生成のSQL文で広く使用されています。識別子の名前はあらかじめわかっていない可能性があります。
他の多くのデータベースシステムは、このような特別な名前を二重引用符( ")を使用する。識別子名を修飾する移植性のために、あなたはMySQLではANSI_QUOTESモードを有効にすることができますし、バッククォートの代わりに二重引用符を使用しています。
'名の区切り文字です。 'UNION'は予約語であるため、フィールドまたは表の名前として使用するには、その名前を常に区切る必要があります。同様の問題のもう一つの例は 'where'というテーブルから' from'というフィールドを '選択 'したい場合です。 – Uueerdo