1

在下面的 SQL 语句中,SQLite 正确排序但 MySQL 没有:

在此处输入图像描述

但是,如果我不在字段名称周围包含引号,它可以正常工作:

在此处输入图像描述

如果字段用引号定义,谁能解释 MySQL 而不是 SQLite 不能正确排序的行为?

4

2 回答 2

2

"TotalOrders"(带双引号)是一个常量字符串 - 按它排序不会做任何事情......本质上你会得到未排序的行序列,这似乎是正确排序的。

你要

ORDER BY `TotalOrders`

带反引号。这是列标识符。

于 2012-07-04T17:13:25.550 回答
0

除了欧根的回答:

值得注意的是,这种行为取决于 MySQL 的配置。

所描述的行为仅显示 MySQL 是否保留在默认 - 非标准兼容配置中。

如果将其配置为在“ANSI 模式”下运行,则双引号不用于字符串文字,而是用于标识符(几乎与所有其他 DBMS 一样)。

该问题的另一个解决方案是通过将 SQL_MODE 更改为“ANSI”来使 MySQL 符合 SQL 标准。

然后标准兼容的单引号用于文字,双引号用于标识符。

于 2012-07-04T22:21:28.817 回答