1

次のSQLステートメントでは、SQLiteは正しくソートされますが、MySQLはソートしません。

ここに画像の説明を入力してください

ただし、フィールド名を引用符で囲まない場合は、正しく機能します。

ここに画像の説明を入力してください

フィールドが引用符で定義されている場合、SQLiteではなくMySQLが正しくソートされないという動作を誰かが説明できますか?

4

2 に答える 2

2

"TotalOrders"(二重引用符付き)は定数文字列です-それによる順序付けは何もしません...本質的には、正しくソートされているように見える、ソートされていない行のシーケンスを取得します。

あなたが欲しい

ORDER BY `TotalOrders`

バックティック付き。これは列識別子です。

于 2012-07-04T17:13:25.550 に答える
0

ユーゲンの答えに加えて:

この動作はMySQLの構成に依存することに注意してください。

説明されている動作は、MySQLがデフォルト(非標準準拠の構成)のままである場合にのみ表示されます。

「ANSIモード」で実行するように構成されている場合、二重引用符は文字列リテラルではなく識別子に使用されます(他のほとんどすべてのDBMSと同様)。

この問題のもう1つの解決策は、SQL_MODEを「ANSI」に変更してMySQLをSQL標準に準拠させることでした。

次に、標準に準拠した一重引用符がリテラルに使用され、二重引用符が識別子に使用されます。

于 2012-07-04T22:21:28.817 に答える